为啥我的控制器方法不可用?

Posted

技术标签:

【中文标题】为啥我的控制器方法不可用?【英文标题】: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

【问题讨论】:

【参考方案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方法

以上是关于为啥我的控制器方法不可用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥VS会出现Projectitem不可用

Android(本机):为啥我的套接字对其他进程不可用?

为啥所有的 Rails 助手总是对所有视图可用?有没有办法禁用它?

为啥我添加到我的 xcode 项目的音频文件在模拟器中可用,但在我在 iPhone 上部署应用程序时不可用

为啥浏览时有可用的信息,而使用图形 api 不可用?

为啥查看源码时仪器显示不可用?