【发布时间】:2016-09-21 10:46:00
【问题描述】:
我使用 controller as 方法而不是 $scope。我在从 HTML 调用方法时遇到了一些问题。所以,问题是,在这种方法中声明和调用函数有多少种方法。
首先:(如果我想先做某事)
var vm= this ;
vm.dataOne=[];
function funcOne() {
myService.serviceFunc()
.then(function (response) {
vm.dataOne= response.data;
});
};
function activate() {
funcOne();
}
activate();
秒:(如果我想根据函数返回值来初始化一个变量)
vm.dataTwo = function () {
doSomeThing();
}
- 还有什么办法吗?
-
应该如何在控制器中定义一个函数 将从 HTML 调用,如
ng-click = "ctrl.dataTwo()";
【问题讨论】:
-
在您的应用程序中使用
controllerAs格式时,您应该在函数之前放置vm而不是$scope。如果你在控制器中使用函数而不在HTML中使用,则不需要在函数前添加vm。 -
正是我这样做。在第一个代码中,我没有使用 vm,因为它是私有的并且将在本地调用。但在第二个代码中,我使用了 vm.dataTwo,因为我想从 HTML 作为公共方法访问它。然后从 HTML 我调用 ctrl.dataTwo() 但我不知道为什么不调用它。 (myController as ctrl)
-
你能创建 plunker 吗?
-
你的两个函数都是私有的。要使用它们,您必须执行
vm.funcOne = funcOne;和vm.activate = activate;。顺便说一句,恭喜你接受了别名!你离更简洁的代码又近了一步。 -
我在评论中提到的第二个函数是 vm.dataTwo,而不是 activate()。我的意思是当我使用 vm.something 时,这是公开的,否则是私有的。
标签: javascript angularjs function angularjs-controlleras