2013-08-21 86 views
4

工作,我是指導角「=」範圍不與駝峯

的作用域屬性,當我使用show與attr名稱,它工作正常。

<span ng-repeat="field in fields"> 
    <field-pill field="field" show="true"></field-pill> 
</span> 

app.js

angular.module('app',[]); 

angular.module('app') 
    .controller('AppCtrl', function($scope){ 
     $scope.fields = [1,2,3,4]; 
    }); 

angular.module('app') 
    .directive('fieldPill', function() { 
    return { 
     template: '<div class="pill">{{field}}:{{show}}--<span ng-show="show">x</span></div>', 
     restrict: 'E', 
     scope:{ 
     field: "=", 
     "show": "=" 
     } 
    }; 
    }); 

(見本plunkr http://plnkr.co/edit/AcqmxeCerCOtGaw9dq9t?p=preview

但是當我使用x-show作爲屬性名稱的指令不加載所有的布爾數據。

<span ng-repeat="field in fields"> 
    <field-pill field="field" x-show="true"></field-pill>  
</span> 

app.js

angular.module('app',[]); 

angular.module('app') 
    .controller('AppCtrl', function($scope){ 
     $scope.fields = [1,2,3,4]; 
    }); 

angular.module('app') 
    .directive('fieldPill', function() { 
    return { 
     template: '<div class="pill">{{field}}:{{xShow}}--<span ng-show="xShow">x</span></div>', 
     restrict: 'E', 
     scope:{ 
     field: "=", 
     xShow: "=" 
     } 
    }; 
    }); 

任何人都可以解釋,爲什麼?

(見本plunkr的代碼x-showhttp://plnkr.co/edit/2txoY3VaShH6WggnugcE?p=preview

+0

可能的重複[如何在AngularJS中使用屬性前綴「x-」和「data-」](http://stackoverflow.com/questions/15256396/how-are-the-attribute-prefixes- x-and-data-used-in-angularjs) – Jon7

+0

是的。我沒有意識到'x-'是我問它的根本原因。 – kanitw

回答

12

我認爲這是與x-前綴。如果您將其更改爲mShow,m-show之類的任何內容,則它將起作用。

從HTML5 spec

屬性名與兩個字符「X-」是爲用戶代理使用保留 ,並保證永遠不會被正式添加到 HTML語言開始。爲了靈活性,包含 下劃線(U + 005F LOW LINE字符)的屬性名稱也保留爲 實驗目的,並且保證絕不會正式添加到HTML語言的 。

因此,請避免使用x-作爲正常的屬性名稱。 :)