【发布时间】:2015-01-09 17:18:34
【问题描述】:
我正在尝试以角度创建directive,以替换常规下拉菜单。我需要能够将动态表达式设置为ng-options,但似乎不在指令内工作。
它在它之外完美地工作。
这是指令
angular.module('app.dropdown',[])
.directive('swDropdown',[ function ( ){
return {
restrict: 'E',
replace: true,
template:'<div><select ng-model="swModel" ng-options="{{expression}}" ></div>',
link: link,
scope:{
swOptions:"=",
swLabel:'@',
swValue:'@',
swModel:"="
}
};
function link (scope, element, attrs) {
scope.defaultText = angular.isDefined(attrs.swDefaultText)?attrs.swDefaultText:'Choose';
scope.selected = scope.defaultText;
scope.expression = 'item as item.name for item in swOptions';
}
}]);
控制器示例:
angular.module('app',['app.dropdown']).controller('Ctrl', function($scope){
$scope.model="";
$scope.expression = 'item as item.name for item in options';
$scope.options = [
{id:1,name:'hola'},
{id:2,name:'chau'}]
});
HTML:
<body ng-app="app" ng-controller="Ctrl">
<h1>Hello Plunker!</h1>
Working dropdown<br/>
<select ng-model="model" ng-options="{{expression}}"></select>
<br/>
Not working inside a directive
<sw-dropdown sw-model="model" sw-options="options"></sw-dropdown>
</body>
关于它为什么不起作用的任何线索?
谢谢!
【问题讨论】:
-
这是一个很好的问题,但我建议在问题本身中包含代码的 relevant 部分。即使链接断开,问题也必须是自我维持的。
-
感谢@NewDev,已更新!
标签: angularjs angularjs-directive ng-options