1

私は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 の使用も検討しました。

どんなアドバイスでも大歓迎です

4

1 に答える 1

1

まず、ng-class="checked:attrs.value==attrs.ngModel}"する必要がありますng-class="{checked:attrs.value==attrs.ngModel}"

第二に、あなたの表現は意味がありません。ng-classダイジェスト サイクル中にビューで評価されます。link関数呼び出し中にディレクティブで評価されません。このため、ng-class が評価されると、attrs変数はなく、もちろん false と評価されます。

于 2013-08-03T07:11:08.773 に答える