Javascript 为什么';这个角度选择包装器指令不起作用吗?
我正试图制定一个指令,用硬编码列表环绕Javascript 为什么';这个角度选择包装器指令不起作用吗?,javascript,angularjs,angularjs-directive,html-select,Javascript,Angularjs,Angularjs Directive,Html Select,我正试图制定一个指令,用硬编码列表环绕select var-app=angular.module('dirApp',[]); app.directive('dir',[function(){ 返回{ 限制:'E', 模板:“”, controllerAs:'vm', 链接:功能(范围){ scope.arr=[“a”,“b”]; } }; }]); 您必须将数据放入控制器中,并在模板中添加ngModel 指令 (function(){ function dir() { ret
select
var-app=angular.module('dirApp',[]);
app.directive('dir',[function(){
返回{
限制:'E',
模板:“”,
controllerAs:'vm',
链接:功能(范围){
scope.arr=[“a”,“b”];
}
};
}]);代码>
您必须将数据放入控制器中,并在模板中添加ngModel
指令
(function(){
function dir() {
return{
restrict: 'E',
template: "<select ng-model='vm.x' ng-options='x for x in vm.arr'></select>",
controllerAs: 'vm',
controller: function() {
var vm = this;
vm.arr = ["a", "b"];
vm.x = vm.arr[0]
}
};
}
angular
.module('app')
.directive('dir', dir);
})();
(函数(){
函数dir(){
返回{
限制:'E',
模板:“”,
controllerAs:'vm',
控制器:函数(){
var vm=这个;
vm.arr=[“a”,“b”];
vm.x=vm.arr[0]
}
};
}
有棱角的
.module('应用程序')
.指令(“dir”,dir);
})();
您忘记在选择中指定ng model=“currentValue”
;没有它,选项将不会初始化。
此外,如果要使用controllerAs引用控制器,可能需要定义控制器:
controller: function () {
this.arr = ["a", "b"];
},
或者,您可以将数组直接放在指令的范围内。
以下是您的指令的一些更新:
myApp.directive('dir', function () {
return {
restrict: 'E',
template: "<select ng-model='crrValue' ng-options='x for x in vm.arr'></select><div ng-repeat='item in arr'>{{item}}</div>",
controller: function () {
this.arr = ["a", "b"];
},
controllerAs: 'vm',
link: function (scope) {
scope.arr = ["c", "d"]
}
};
});
myApp.directive('dir',function(){
返回{
限制:'E',
模板:“{item}}”,
控制器:函数(){
this.arr=[“a”,“b”];
},
controllerAs:'vm',
链接:功能(范围){
scope.arr=[“c”,“d”]
}
};
});
您将注意到div和select之间的差异
希望这对任何人都有帮助 在控制器
中它需要什么而不是链接?link
中的scope
对象本质上不是一回事吗?link
函数通常用于注册DOM侦听器以及更新DOM。当另一个指令需要与此指令交互时,例如ngOptions
,必须使用控制器。此外,在您的示例中,变量设置为this
,而不是$scope
。这里您使用this
而不是scope
。欲了解更多信息,请点击此处