我正在创建一个指令,用一个自定义的标签代替普通的select标签:
angular.module('myModule').directive('mySelect', function() {
return {
restrict: 'AE',
require: 'ngModel',
templateUrl: 'mySelect.html'
replace: true,
scope: true,
controller: ['$scope', function($scope) { $scope.options = [1,2,3,4,5] }],
link: function(scope, element, attrs, ctrl) {
// No updates to scope here
}
}
});
模板看起来像:
<select ng-model="value" ng-options="(x | sprintf:'%02d') for x in options"></select>
由于某些奇怪的原因,ng-options
创建的选项会被应用两次。生成的HTML看起来像:
<select my-select ng-options="(x | sprintf:'%02d') for x in options" class="...">
<option value="?" selected="selected"></option>
<option value="0">01</option>
<option value="1">02</option>
<option value="2">03</option>
<option value="3">04</option>
<option value="4">05</option>
<option value="?" selected="selected"></option>
<option value="0">01</option>
<option value="1">02</option>
<option value="2">03</option>
<option value="3">04</option>
<option value="4">05</option>
</select>
有人知道发生了什么事吗?
答案 0 :(得分:2)
你应该使用div代替<select my-select></select>
这样的
<div my-select></div>
指令mySelect
返回另一个select
指令,因此您将收到错误Error: Multiple directives [select, select]
,因为HTML将呈现为
<select ng-options="x for x in options" ng-model="value" my-select=""></select>
的 Demo 强>