Angular动态更改select from指令的选项

时间:2013-10-31 10:48:31

标签: javascript angularjs

我想写一个指令,它为选择和ng-options的对象添加一个新值。

但是当我将此指令添加到选择时,项目会消失。

小例子:

HTML:

<div ng:app="editor" ng:controller="BaseController">
    <select ng-model='m' ng-options='i.Id as i.Val for i in model.items' add-new-val='model.items'></select>
    <select ng-model='m' ng-options='i.Id as i.Val for i in model.items'></select>
</div>

的javascript:

var module = angular.module('editor', []);

function BaseController($scope){
    $scope.model = {
        items: [{Id:1, Val:"_1"}]
    }

    $scope.m = 1;
}

module.directive('addNewVal',function(){
    return {
        scope:{
            items: '=addNewVal'
        },
        controller: function($scope){
            $scope.items.push({Id: 3, Val: "Have a nice day"});
        }
    }

})

jsfidle

怎么了?

1 个答案:

答案 0 :(得分:1)

正如ranru建议的那样,你可以用这样的方式重写你的指令,它不会清除 select 指令的范围。像这样:

module.directive('addNewVal',function(){
    return {
        controller: function($attrs, $scope){         
            var data = $scope.$eval($attrs.addNewVal);
            data.push({Id: 3, Val: "Have a nice day"});
        }
    }    
})