6

次のシャトルボックスディレクティブがあります。

<shuttle-boxes ng-options="item for item in itemList" ng-model="myModel" />

私のテンプレートは次のようになります。

template: '<div class="shuttle-boxes">' +
        '<select multiple="multiple" class="shuttle-boxes-left"></select>' +
        '<button class="shuttle-boxes-btn" type="button"><i class="icon icon-arrow-right"></i></button>' +
        '<button class="shuttle-boxes-btn" type="button"><i class="icon icon-arrow-left"></i></button>' +
        '<select multiple="multiple" class="shuttle-boxes-right"></select>' +
        '</div>'

私がやりたいのは、ng-optionsリピーターを取得し、<shuttle-boxes>それを使用してデータを入力すること<select class="shuttle-boxes-left">です。

私がそれをやろうとしているのにうまくいかないのは、次のようにng-options属性を選択リストにコピーするだけです。

var availableList = cElement.find('.shuttle-boxes-left'),
        repeater = cAttrs.ngOptions;

    availableList.attr('ng-options', repeater);

これがフィドルです:http://jsfiddle.net/dkrotts/tHTAY/1/

私は何が間違っているのですか?

4

1 に答える 1

8

itemListをディレクティブ(およびmyModel)に渡し、ng-optionsをテンプレート内に配置することをお勧めします。

 <shuttle-boxes items="itemList" ng-model="myModel"></shuttle-boxes>

指令:

myApp.directive('shuttleBoxes', function($timeout) {
    return {
        restrict: 'E',
        scope: { items: '=', ngModel: '='},
        template: '<div class="shuttle-boxes">' +
            '<select multiple="multiple" class="shuttle-boxes-left" 
               ng-options="item for item in items" ng-model="ngModel"></select>' +
            '<button class="shuttle-boxes-btn" type="button">' +
            '<i class="icon icon-arrow-right"></i></button>' +
            '<button class="shuttle-boxes-btn" type="button">' +
            '<i class="icon icon-arrow-left"></i></button>' +
            '<select multiple="multiple" class="shuttle-boxes-right"></select>' +
            '</div>',
        replace: true
    }
});

フィドル

于 2013-01-29T15:50:44.717 に答える