Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何编写角度指令来侦听“ngOptions”中的更改?_Angularjs_Twitter Bootstrap_Bootstrap Select - Fatal编程技术网

Angularjs 如何编写角度指令来侦听“ngOptions”中的更改?

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);

我正在使用插件进行样式选择。它基本上是一个连接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);
    }
  }
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
还有什么其他的可能性,或者是否有更干净的方法来解析它