2013-08-21 4 views
4

Я область видимости свойства директивыУгловые «=» сфера не работает с верблюжьим

Он отлично работает, когда я использую show в качестве атра имени.

<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

Возможный дубликат [Как префикс атрибута «x-» и «data-» используется в AngularJS] (http://stackoverflow.com/questions/15256396/how-are-the-attribute-prefixes- x-and-data-used-in-angularjs) – Jon7

+0

Да. Я не понимал, что «х-» была основной причиной, когда я спросил ее. – kanitw

ответ

12

Я думаю, что это отношение к приставке x-. Если вы измените его на что-нибудь вроде mShow, m-show, он будет работать.

С HTML5 spec:

Имена атрибутов, начинающиеся с двух символов «x-» зарезервированы для использования агента пользователя и гарантированно никогда не будет официально добавлен в HTML-языка. Для гибкости имена атрибутов, содержащие символы подчеркивания (символ U + 005F LOW LINE) также зарезервированы для экспериментальных целей и, как правило, не будут официально добавлены к на языке HTML.

Поэтому избегайте использования x- для нормального имени атрибута. :)

Смежные вопросы