Angularjs 如何编写角度指令来侦听“ngOptions”中的更改?
我正在使用插件进行样式选择。它基本上是一个连接angular的Angularjs 如何编写角度指令来侦听“ngOptions”中的更改?,angularjs,twitter-bootstrap,bootstrap-select,Angularjs,Twitter Bootstrap,Bootstrap Select,我正在使用插件进行样式选择。它基本上是一个连接angular的bootstrap select插件的端口 从现在起,只要ng型号发生变化,它似乎就会更新。不过,我也想听听ng选项 以下是插件的相关部分: if (attrs.ngOptions) { var watch = attrs.ngOptions.match(/in ([A-z0-9]+)$/); if (watch) { scope.$watch(watch[1], refresh, true);
bootstrap select
插件的端口
从现在起,只要ng型号发生变化,它似乎就会更新。不过,我也想听听ng选项
以下是插件的相关部分:
if (attrs.ngOptions) {
var watch = attrs.ngOptions.match(/in ([A-z0-9]+)$/);
if (watch) {
scope.$watch(watch[1], refresh, true);
}
}
angular.module('angular-bootstrap-select',[])
.directive('selectpicker',['$parse','$timeout',selectpickerDirective]);
函数selectpickerDirective($parse,$timeout){
返回{
限制:“A”,
优先权:1000,
链接:函数(范围、元素、属性){
函数刷新(newVal){
作用域$applyAsync(函数(){
if(attrs.ngOptions&&/track by/.test(attrs.ngOptions))element.val(newVal);
element.selectpicker('refresh');
});
}
属性$observe('spTheme',函数(val){
$timeout(函数(){
element.data('selectpicker').$button.removeClass(函数(i,c){
返回(c.match(/(^ |\s)?btn-\s+/g)| |[])。连接(“”);
});
元素选择器('setStyle',val);
});
});
$timeout(函数(){
element.selectpicker($parse(attrs.selectpicker)();
element.selectpicker('refresh');
});
if(attrs.ngModel){
范围.$watch(attrs.ngModel,刷新,真);
}
如果(属性已禁用){
范围.$watch(attrs.ngDisabled,refresh,true);
}
作用域:$on(“$destroy”,函数(){
$timeout(函数(){
元素。选择器选择器('destroy');
});
});
}
};
}
到目前为止,我发现最好的方法是在插件中插入以下内容:
if (attrs.ngOptions) {
var watch = attrs.ngOptions.match(/in ([A-z0-9]+)$/);
if (watch) {
scope.$watch(watch[1], refresh, true);
}
}
虽然看起来有点脏…我对angular还很陌生,所以我不确定ngOptions
还有什么其他的可能性,或者是否有更干净的方法来解析它