【问题标题】:Why are my controllers methods not available?为什么我的控制器方法不可用?
【发布时间】:2017-05-14 20:52:16
【问题描述】:

很长一段时间后,我不得不再次集中注意力。 但我失败了……

... ng-repeat="n in DataController.getObjects"

myApp.controller('DataController', [function () {

    console.log('test 1');

    var getObjects = function () {
        console.log('test 2');
        return [1,2,3,4,5,6,7];
    };

}]);

它正在将测试 1 写入控制台,但没有写入测试 2。并且前端没有获取数组。

有什么提示吗?

问候 n00n

【问题讨论】:

    标签: javascript angularjs controller angularjs-controller angularjs-controlleras


    【解决方案1】:

    您必须在控制器的this(上下文)页面上公开您想要访问的method/variable。这样您就可以通过控制器别名访问该方法/变量,因为您似乎正在使用controllerAs 模式。

    代码

    myApp.controller('DataController', [function () {
        var self = this;
        console.log('test 1');
        var getObjects = function () {
            console.log('test 2');
            return [1,2,3,4,5,6,7];
        };
    
        self.getObjects = getObjects;
    }]);
    

    希望您在使用ng-controller 指令时已经定义了控制器别名,如果您还没有使用过,请按照以下说明操作。

    ng-controller="DataController as dataCtrl"
    
    ng-repeat="n in dataCtrl.getObjects()"
    

    如您所见,您应该像getObjects() 一样调用ng-repeat 中的方法以从方法中获取数组。

    【讨论】:

    • 还是不行 .controller('DataController', [function () { var self = this; console.log('test 1'); var getObjects = function () { console.log('测试 2'); 返回 [1,2,3,4,5,6,7]; }; self.getObjects = getObjects; }]);是的,我做到了:
    • 检查更新的答案,谢谢;)你错过了getObjects方法
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签