【问题标题】:AngularJS ng-click attribute not updating on post request within ng-repeatAngularJS ng-click 属性未在 ng-repeat 中的发布请求上更新
【发布时间】:2020-07-19 20:49:27
【问题描述】:

这是目录的 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



这是 catalog.js 文件

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 函数工作正常。

【问题讨论】:

    标签: angularjs ajax post get pug


    【解决方案1】:

    这是新的 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 它给了我模块未定义的错误。任何关于为什么这样做的见解都会很好。

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多