2013-12-14 94 views
0

我正在學習AngularJS中的指令,並發現在幾個示例中,添加一個隔離範圍(@,=或&)。它們有時不僅添加了隔離範圍,還添加了後面的ngModel名稱。即:「@name」而不是「@」。孤立範圍+綁定名稱和孤立範圍之間的區別僅在AngularJS

所以,有什麼區別:

myApp.directive('zippy', function() { 
    return { 
     restrict: "E", 
     transclude: true, 
     replace: true, 
     scope: { 
      name: "@" // <---- 
     }, 
     template: "<div>{{name}}<div ng-transclude></div></div>", 
     link: function(scope, element, attrs) { 
      console.log(scope.name); 
     } 
    } 
}); 

而且這樣的:

myApp.directive('zippy', function() { 
    return { 
     restrict: "E", 
     transclude: true, 
     replace: true, 
     scope: { 
      name: "@name" // <---- 
     }, 
     template: "<div>{{name}}<div ng-transclude></div></div>", 
     link: function(scope, element, attrs) { 
      console.log(scope.name); 
     } 
    } 
}); 

回答

3

這是從開發人員指南

對於情況下,屬性名相同作爲你想要 綁定到指令內的值'範圍內,你可以使用這個速記 語法:

... 
scope: { 
    // same as '=customer' 
    customer: '=' 
}, 
... 

意味着你可以在你的指令中使用name: "@"如果你有其中指令聲明

<div zippy name="myName"></div> 

記住屬性的名稱應該同名HTML屬性不匹配屬性中的表達式。它可以是範圍上的任何屬性。

+0

Ohhhh我知道了...讓我改述一下,如果不是名稱,我在範圍中獲得了「customerName」,那麼我應該把範圍:{customerName:'@name'},對不對?但由於scope屬性與html「name」中的指令完全相同,所以我不需要添加「@name」,我可以直接使用「@」:) – user3078876

相關問題