AngularJS:迭代对象时代码不工作

这个问题在这里已经有了答案:

  • AngularJS控制器中的'this'与$ scope有关的7个答案

  • 问题是this ,你在里面访问populateTable功能不是this ,你有没有在你的控制器功能。

    最好把this变量放在一些变量里面,这样你就可以确保你指的是正确的对象。

    调节器

    app.controller('employeeController', function ($scope, employeeService) {
        var vm = this;
        vm.employees = {};
    
        vm.populateTable = function (data) {
            vm.employees = data;
        };
    
        var error = function (err) {
            console.log("Error: " + err);
        };
    
        // Call Service to List all Employees
        console.log("Service called to populate table.");
        employeeService.output().then(vm.populateTable, error);
        vm.populateTable();
    });
    

    有关更多详细信息,我强烈建议您阅读本文

    如果你对this scope感到困惑,那么请阅读这个答案


    您的变量添加到$scope ,而不是this类似:

    $scope.customers = {};
    
    $scope.populateTable = function (data) {
        $scope.employees = data;
    };
    

    编辑:这两种方法的工作。 请参阅这篇文章的深入解释。


    “this”替换为vm(View-Model)将解决您的问题。 不污染$ scope对象是一件小事。 是一个全局上下文,其值取决于函数调用。

    所以,在你的控制器中分配,

    var vm = this;
      vm.empTable = function (data) {
      vm.employeeList = data.data; 
    };
    

    ..并在控制器的其他地方使用vm对象。 在视图中使用多个控制器的同时保持代码清洁会很有用。

    别忘了给控制器一个别名,

    <div ng-controller="MainCtrl as main">
        <div ng-repeat=" employee in main.vm.employeeList ">
            {{employee.name}}
        </div>
    </div>
    
    链接地址: http://www.djcxy.com/p/77799.html

    上一篇: AngularJS: code not working when iterating through object

    下一篇: Difference between $scope and this in controller context?