我定义了简单的指令,如下所示:
(function () {
'use strict';
angular
.module('myApp')
.directive('biSelect', biSelect);
function biSelect($compile) {
var directive = {
restrict: 'E',
templateUrl: 'bi-select.html',
scope: {
required: '=?required'
},
controller: BiSelectController,
controllerAs: 'vm'
};
return directive;
}
function BiSelectController() {
var vm = this;
}
})();
这是指令模板:
<select class="form-control">
<option value=""></option>
</select>
现在,我想将required
属性传递给指令中的select
,例如:
<bi-select required></bi-select>
我该怎么做?
答案 0 :(得分:1)
在模板中使用ng-required
指令:
<select ng-required="vm.required">
<option value=""></option>
</select>
由于required
属性是布尔值,所以任何隔离范围绑定都无效:
scope: {
//WONT work
//required: '=?required'
},
相反,注入并使用$attrs
对象:
function BiSelectController($attrs) {
var vm = this;
vm.required = !!$attrs.$attr.required;
}
控制器使用$attrs
对象检测归一化required
属性的存在或不存在,并将vm.required
设置为true
或false
。
有关更多信息,请参见