定義的函數(JavaScript的)與scope.function(角度函數)我想知道在角控制器這兩功能的聲明之間的差差異在控制器
function demo() {
};
scope.demo = function() {
};
無論這種兩個函數在性能類似或不是?,哪一個更好?
我知道只有一個區別,手錶可以應用到一個函數,這是在範圍意味着角度指令或元素不能調用JavaScript函數。
定義的函數(JavaScript的)與scope.function(角度函數)我想知道在角控制器這兩功能的聲明之間的差差異在控制器
function demo() {
};
scope.demo = function() {
};
無論這種兩個函數在性能類似或不是?,哪一個更好?
我知道只有一個區別,手錶可以應用到一個函數,這是在範圍意味着角度指令或元素不能調用JavaScript函數。
我認爲唯一的區別是功能的可見性。第一個是全局的,第二個只能通過角度變量scope
來提及。
考慮以下控制器:
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>
正如你看到的,私有方法是隻在控制器代碼本身內訪問。
在這裏你已經調用了帶有「ng-click」角度指令的私有方法,所以角度會在角度範圍內找到該私有方法,但它沒有在範圍中註冊,所以它不會被調用。我正確嗎? –
不完全。第一個按鈕將失敗並顯示一個Javascript錯誤,因爲該功能不存在於控制器之外。 –
@SatyamKoyani請記住標記答案是正確的 –
@LiviuM。這是不一樣的。函數demo()與this.demo = function()不一樣。函數演示()作爲OP寫入是一個私人函數,並且永遠不會在範圍內訪問。 –