Javascript 从控制器外部强制范围刷新
我在一个非常基本的AngularJS应用程序中使用了一个jQuery UI选择列表。当列表被打开并选中某个项目时,此更改不会进入Angular,因此应用程序不会响应此更改。如果我删除它的jQueryUI方面,并使其成为一个常规的选择列表,就可以了。我想一定有办法让他们踢得很好,有人知道怎么做吗 示例: HTML: JSFiddle:Javascript 从控制器外部强制范围刷新,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我在一个非常基本的AngularJS应用程序中使用了一个jQuery UI选择列表。当列表被打开并选中某个项目时,此更改不会进入Angular,因此应用程序不会响应此更改。如果我删除它的jQueryUI方面,并使其成为一个常规的选择列表,就可以了。我想一定有办法让他们踢得很好,有人知道怎么做吗 示例: HTML: JSFiddle: 您的问题是jquery插件实际上根本没有使用select-它使它不可见,然后创建一系列表示它的div和span,然后将事件绑定到该div和span 这是一种非常jQ
您的问题是jquery插件实际上根本没有使用select-它使它不可见,然后创建一系列表示它的div和span,然后将事件绑定到该div和span 这是一种非常jQuery的方式,但与angular完全断开
我的建议是完全改变您的方法-不要使用jQuery组件,而是使用angular指令。有一些库(例如angular ui)已经将大部分jquery ui功能移植到了native angular,所以不要再发明轮子。你的问题是jquery插件实际上根本没有使用select-它使它不可见,然后创建一系列表示它的div和span,然后将事件绑定到它 这是一种非常jQuery的方式,但与angular完全断开
我的建议是完全改变您的方法-不要使用jQuery组件,而是使用angular指令。有一些库(例如angular ui)已经将大部分jquery ui功能移植到了native angular,所以不要再发明轮子。你的问题是jquery插件实际上根本没有使用select-它使它不可见,然后创建一系列表示它的div和span,然后将事件绑定到它 这是一种非常jQuery的方式,但与angular完全断开
我的建议是完全改变您的方法-不要使用jQuery组件,而是使用angular指令。有一些库(例如angular ui)已经将大部分jquery ui功能移植到了native angular,所以不要再发明轮子。你的问题是jquery插件实际上根本没有使用select-它使它不可见,然后创建一系列表示它的div和span,然后将事件绑定到它 这是一种非常jQuery的方式,但与angular完全断开
我的建议是完全改变您的方法-不要使用jQuery组件,而是使用angular指令。有一些库(例如angular ui)已经将大部分jquery ui功能移植到本机angular,因此不要再发明轮子。您可以添加一个简单的指令作为jquery插件的包装,如下所示:
appExample.directive('selectMenu', function() {
return {
restrict: 'A',
require: 'ngModel',// require ngModel controller
link: function(scope, element, attrs, ngModelCtrl) {
$(element).selectmenu({
//update ngModel on menu change event
change: function( event, ui ) {
scope.$apply(function() {
ngModelCtrl.$setViewValue(element.val());
});
}
});
}
};
});
然后更新选择元素:
<select data-ng-model="selectedOption" data-select-menu>
更新小提琴:
这适用于基本的AngularJS应用程序。但是最好避免jquery,坚持使用angular指令和模块。您可以添加一个简单的指令作为jquery插件的包装,如下所示:
appExample.directive('selectMenu', function() {
return {
restrict: 'A',
require: 'ngModel',// require ngModel controller
link: function(scope, element, attrs, ngModelCtrl) {
$(element).selectmenu({
//update ngModel on menu change event
change: function( event, ui ) {
scope.$apply(function() {
ngModelCtrl.$setViewValue(element.val());
});
}
});
}
};
});
然后更新选择元素:
<select data-ng-model="selectedOption" data-select-menu>
更新小提琴:
这适用于基本的AngularJS应用程序。但是最好避免jquery,坚持使用angular指令和模块。您可以添加一个简单的指令作为jquery插件的包装,如下所示:
appExample.directive('selectMenu', function() {
return {
restrict: 'A',
require: 'ngModel',// require ngModel controller
link: function(scope, element, attrs, ngModelCtrl) {
$(element).selectmenu({
//update ngModel on menu change event
change: function( event, ui ) {
scope.$apply(function() {
ngModelCtrl.$setViewValue(element.val());
});
}
});
}
};
});
然后更新选择元素:
<select data-ng-model="selectedOption" data-select-menu>
更新小提琴:
这适用于基本的AngularJS应用程序。但是最好避免jquery,坚持使用angular指令和模块。您可以添加一个简单的指令作为jquery插件的包装,如下所示:
appExample.directive('selectMenu', function() {
return {
restrict: 'A',
require: 'ngModel',// require ngModel controller
link: function(scope, element, attrs, ngModelCtrl) {
$(element).selectmenu({
//update ngModel on menu change event
change: function( event, ui ) {
scope.$apply(function() {
ngModelCtrl.$setViewValue(element.val());
});
}
});
}
};
});
然后更新选择元素:
<select data-ng-model="selectedOption" data-select-menu>
更新小提琴:
这适用于基本的AngularJS应用程序。但是最好避免使用jquery,坚持使用angular指令和模块。对不起,我理解它为什么不更新,我的问题是是否有办法手动触发更新?对不起,我理解它为什么不更新,我的问题是是否有办法手动触发更新?对不起,我理解它为什么没有更新,我的问题是是否有办法手动触发更新?对不起,我理解它为什么没有更新,我的问题是是否有办法手动触发更新?我真的很喜欢这种方法-非常感谢。不幸的是,由于严格的截止日期,我现在只能使用jQueryUI,但我会在可能的情况下转移到Angular UI。我真的很喜欢这种方法-非常感谢。不幸的是,由于严格的截止日期,我现在只能使用jQueryUI,但我会在可能的情况下转移到Angular UI。我真的很喜欢这种方法-非常感谢。不幸的是,由于严格的截止日期,我现在只能使用jQueryUI,但我会在可能的情况下转移到Angular UI。我真的很喜欢这种方法-非常感谢。不幸的是,由于严格的截止日期,我现在只能使用jQueryUI,但我要记下,如果可能的话,可以使用Angular UI。