我想知道角度控制器中这两个函数的声明之间的区别
function demo() {
};
scope.demo = function() {
};
这两个功能在性能上是否相似?,哪一个是更好的选择?
我知道只有一个区别是watch可以应用于范围内的函数意味着angular指令或元素不能调用javascript函数。
答案 0 :(得分:2)
考虑以下控制器:
app.controller('Home', function($scope){
function thisIsAPrivateMethod(){
alert('Hello world');
}
$scope.thisIsAPublicScopedMethod(){
alert("I'm shown!");
}
thisIsAPrivateMethod(); // will trigger the alert everytime HomeController is instansiated
});
在视图中:
<div ng-controller="Home">
<button ng-click="thisIsAPrivateMethod()">I will not work</button>
<button ng-click="thisIsAPublicScopedMethod()">I should display an alert</button>
</div>
如您所见,私有方法只能在控制器代码本身中访问。
答案 1 :(得分:1)
我认为唯一的区别是功能的可见性。第一个是全局的,第二个只能通过角度scope
变量引用。