2014-11-05 90 views
5

我正尝试用Angular指令创建一个自定义选择元素。ng模型中的角度表达式

该指令中的模板包含一个select元素,它带有我想从自定义元素中获得的ng-model属性。

<custom-select inner-model="modelName"> 
    <select model="{{model}}"></select> 
</custom-select> 

我的问题是Angular不允许Angular表达式作为ng-model属性的值。

我也试图设置属性与

link: function(scope, element, attributes) { 
    element[0].childNodes[0].setAttribute('data-ng-model', attributes.innerModel); 
} 

它不会采取与正确的价值属性,但它仍然没有工作。

这里是我的plunker:Plunker

回答

2

您需要定义一个孤立的范围。这将基本上将分配给inner-model属性的外部范围属性绑定到内部范围属性innerModel,然后您可以在模板中使用它。

app.directive('customSelect', function() { 
    return { 
    restrict: 'E', 
    transclude: true, 
    scope: { 
     innerModel: "=" 
    } 
    template: '<select ng-model="innerModel" data-ng-transclude></select>', 
    }; 
}); 

然后,你可以这样做:

<custom-select inner-model="someScopeProperty"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    ... 
</custom-select> 

+0

谢谢(虽然,我还是被你正在努力实现什么疑惑的)!它效果很好!我想要实现的是创建一个自定义选择与此选择下的元素(不透明度为0)。但是我需要这个选择才能首先在模型上正常工作。 – vcuongvu 2014-11-05 10:41:14

+0

你应该提出新的问题并提供更多的数据 – 2014-11-05 10:42:55

+0

我认为这是没有必要的,因为更多的数据只是CSS。或者我应该更新抢劫犯? – vcuongvu 2014-11-05 10:46:58