AngularJS атрибут ng-click не обновляется по запросу после публикации в ng-repeat - PullRequest
0 голосов
/ 07 апреля 2020

Это файл pug для каталога

doctype html
html
    head
        title Tradecademy
        meta(name="viewport", content="width=device-width, initial-scale=1")
        script(src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js")
        script(src="https://code.angularjs.org/1.5.6/angular-sanitize.min.js")
        link(rel="stylesheet", href="https://www.w3schools.com/w3css/4/w3.css")
        link(rel="stylesheet", href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css")
        link(rel="stylesheet", href="https://fonts.googleapis.com/css?family=Montserrat")
        link(href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css", rel="stylesheet", integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh", crossorigin="anonymous")
        script(src="./includes/catalog.js")
    body(ng-app="catalog" ng-controller="catalogController")
        include ./includes/appheader.pug
        .w3-display-container
            ul.w3-ul
                li
                    h2 Beginner Modules
                li
                    div(ng-repeat=("module in beginnerModules"))
                       | {{module.name}}
                       button.w3-button.w3-blue.w3-hover-teal(ng-click="buyCourse(\"{{module.name}}\")")
                li
                    h2 Advanced Modules



Это каталог. js file

var app = angular.module('catalog', ['ngSanitize']);

app.controller("catalogController", ($scope, $http) => {
  $http({
    method : 'GET',
    url : '/catalogModules'

  }).then((response)=> {
    if(response.data.undefined == "undefined") {
      window.location.href="/"
    }
    else 
    {
      $scope.headerArray = []

      angular.forEach(response, (value) => {
        $scope.headerArray.push(value);
      });

      $scope.modules = $scope.headerArray[0];
      $scope.beginnerModules = []
      $scope.advancedModules =[]
      angular.forEach($scope.modules, (value) => {

        if(value.type == "Beginner") 
        {
          $scope.beginnerModules.push(value);
        }
        if(value.type == "Advanced") 
        {
          $scope.advancedModules.push(value);
        }
      });
    }
  $scope.buyCourse = (module) => {
        console.log(module);
        $http.post("/buyNewModule", module)
        .success(function (data, status, headers) {
          console.log($scope.beginnerCourseKey);
          console.log(data);
          console.log(status);
          console.log(headers);
        })
        .error(function (data, status, header) {
          console.log($scope.beginnerCourseKey);
          console.log(data);
          console.log(header);
          console.log(status);
        });
      }
  });
});

Проблема заключается в том, когда следует регистрировать атрибут имени модуля это регистрирует "{{module.name}}". Мне нужно иметь доступ к действительному значению имени вместо интерполяции AngularJS. Я довольно новичок в AngularJS, поэтому, если я делаю что-то не так, пожалуйста, дайте мне знать. Функция GET работает просто отлично.

1 Ответ

0 голосов
/ 08 апреля 2020

Вот новый файл pug.

.w3-display-container
            ul.w3-ul
                li
                    h2 Beginner Modules
                li
                    div(ng-repeat=("module in beginnerModules"))
                       button.w3-button.w3-blue.w3-hover-teal(ng-click="buyCourse(module.name)")
                li
                    h2 Advanced Modules

Я не уверен, почему он сделал это, как я пытался сделать - var moduleName = module.name, и он выдал ошибку, что модуль не определен. Любое понимание того, почему это сработало, было бы неплохо.

...