2

定義的函數(JavaScript的)與scope.function(角度函數)我想知道在角控制器這兩功能的聲明之間的差差異在控制器

function demo() {       
};    

scope.demo = function() {      
}; 

無論這種兩個函數在性能類似或不是?,哪一個更好?

我知道只有一個區別,手錶可以應用到一個函數,這是在範圍意味着角度指令或元素不能調用JavaScript函數。

+0

@LiviuM。這是不一樣的。函數demo()與this.demo = function()不一樣。函數演示()作爲OP寫入是一個私人函數,並且永遠不會在範圍內訪問。 –

回答

1

我認爲唯一的區別是功能的可見性。第一個是全局的,第二個只能通過角度變量scope來提及。

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> 

正如你看到的,私有方法是隻在控制器代碼本身內訪問。

+0

在這裏你已經調用了帶有「ng-click」角度指令的私有方法,所以角度會在角度範圍內找到該私有方法,但它沒有在範圍中註冊,所以它不會被調用。我正確嗎? –

+0

不完全。第一個按鈕將失敗並顯示一個Javascript錯誤,因爲該功能不存在於控制器之外。 –

+0

@SatyamKoyani請記住標記答案是正確的 –