解决angularJS chosen列表不更新的方法

原创
2018/08/30 11:02
阅读数 540

我们都知道,chosen更新值的代码是这个

$(xxx).trigger("chosen:updated");//新版

$(xxx).trigger("liszt:updated");//旧版

通常来说,如果用的是jq,那么在append以后,直接跟上上面的代码以后,chosen的值就会同步更新了。

但是!但是!但是!如果用的是angular,那么分为两种情况:

1、在当前angular的上下文中动态添加或修改了值,一般是用ng-repeat,此时在后面加上上面的代码即可。

2、不在当前angular的上下文中动态添加或修改了值,那么直接在后面加上上面的代码,是无效的!!!,因为chosen的值是根据select标签的值来更新的,而select标签的值是受angular的ng-repeat影响的,如果没有把值在angular中更新的话,只在chosen中更新值是没有任何作用的。因此,我们在非angular的上下文中修改了值以后,需要加上下面的代码把值在angular中更新一下:

$scope.$apply();

 

通过$timeout来解决:

1、首先将ng-options改为option ng-repeat,如:<option ng-repeat="m in ms" value="{{m}}">{{m}}</options>

2、动态改变了ms了之后,加入以下代码:

                $scope.ms = data.obj.models;
                $timeout(function() {
                    $("#model_select").trigger("chosen:updated");
                }, 0, false);

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部