Javascript 从控制器外部强制范围刷新

Javascript 从控制器外部强制范围刷新,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我在一个非常基本的AngularJS应用程序中使用了一个jQuery UI选择列表。当列表被打开并选中某个项目时,此更改不会进入Angular,因此应用程序不会响应此更改。如果我删除它的jQueryUI方面,并使其成为一个常规的选择列表,就可以了。我想一定有办法让他们踢得很好,有人知道怎么做吗 示例: HTML: JSFiddle: 您的问题是jquery插件实际上根本没有使用select-它使它不可见,然后创建一系列表示它的div和span,然后将事件绑定到该div和span 这是一种非常jQ

我在一个非常基本的AngularJS应用程序中使用了一个jQuery UI选择列表。当列表被打开并选中某个项目时,此更改不会进入Angular,因此应用程序不会响应此更改。如果我删除它的jQueryUI方面,并使其成为一个常规的选择列表,就可以了。我想一定有办法让他们踢得很好,有人知道怎么做吗

示例:

HTML:

JSFiddle:


您的问题是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。