在Angular Directive中有条件地应用ng-class

时间:2013-08-02 16:17:55

标签: angularjs angularjs-directive

我对Angular很新,我正在尝试打包收音机输入:

<input type="radio" ng-model="animal" name="fun" value="dog" radio />
<input type="radio" ng-model="animal" name="fun" value="cat" radio />

根据无线电的值是否等于模型(选择单选按钮),有条件地将指令中的类应用于包装元素

http://jsfiddle.net/TSM_mac/HB7LU/141/

.directive('radio', function() {
    return {
        restrict: 'A',
        link: function(scope, elem, attrs) {
            elem.wrap('<div class="radio-wrap" ng-class="checked:attrs.value==attrs.ngModel}"></div>');
        }
    }  
})

我考虑过使用模板属性,然后用模板包装元素。我也考虑过使用$ compile。

感谢任何建议

1 个答案:

答案 0 :(得分:1)

首先,ng-class="checked:attrs.value==attrs.ngModel}"应为ng-class="{checked:attrs.value==attrs.ngModel}"

其次,你的表达毫无意义。在摘要周期中,您的视图会评估ng-class。在link函数调用期间,不会在您的指令中对其进行评估。因此,当评估ng-class时,将不会有attrs变量,当然,它将评估为false。