【发布时间】:2015-10-09 01:43:49
【问题描述】:
我制定了一个指令,通过将它们注入到隔离指令中来帮助我减少需要注入主应用程序控制器的依赖项的数量。
例如,我有一个性别下拉列表["MALE, "FEMALE"]。我已将此数组注册为值提供者。这是一个在AngularJS 1.2.28中起作用的指令的简单示例
指令:
module.directive('appGenderOptions', ['genders', function(genders) {
return {
restrict: 'A',
require: 'ngModel',
controller: function($scope) {
$scope.genders = genders;
},
compile: function(elem, attr) {
attr.ngOptions = 'g for g in genders';
}
};
}]);
查看:
<select ng-model="person.gender" app-gender-options></select>
所以当这个指令被链接时,它会将性别添加到选择列表并绑定到模型,而无需将性别注入主控制器。
已更新至最新版本 1.4.2,性别不再附加到选择列表中。我怀疑它与在 1.3 中对 HTML 编译器 $compile 所做的重大更改有关,并且它们现在的作用域隔离方式有效,但我承认我有点难过。
您能否就如何修复此便利指令提供一些建议?
【问题讨论】:
标签: javascript html angularjs angularjs-directive angularjs-scope