控制器中定义的函数(javascript)与scope.function(angular函数)的区别

时间:2014-07-23 06:21:10

标签: javascript angularjs function angularjs-controller difference

我想知道角度控制器中这两个函数的声明之间的区别

function demo() {                           
};               

scope.demo = function() {                    
};

这两个功能在性能上是否相似?,哪一个是更好的选择?

我知道只有一个区别是watch可以应用于范围内的函数意味着angular指令或元素不能调用javascript函数。

2 个答案:

答案 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变量引用。