如何从jquery触发ng-change?

hte*_*lez 24 angularjs

我有一个select标签如下:

<select ng-change="doSomething()" ng-model="myModel"> </select>
Run Code Online (Sandbox Code Playgroud)

我正在使用jQueryUI控件(组合框),从jQuery触发的事件"更改"不会触发doSomething().

你知道如何从外角度触发ng-change吗?

cla*_*key 58

问题不是如何运行某些代码,而是如何触发更改事件.我找到了一种角度友好的方式来做到这一点.我有一个jQuery UI滑块,可以更改另一个输入的值,该输入上有ng-change.秘诀是,一旦你将它变成一个angular.element,你现在可以访问一个名为triggerHandler的方法.从我所看到的,使用它不会被认为是不好的做法:

angular.element(document.getElementById('test')).triggerHandler('change');
Run Code Online (Sandbox Code Playgroud)

tymeJV的答案angular.element("#test")直接没有使用jQuery,但我得到了一个控制台错误和破坏功能.此版本无任何依赖性.


tym*_*eJV 5

呃 - 这是一种可怕的做法 - 但你可以使用angular.elementscope从目标控制器中的元素中获取.

例:

<div ng-controller="myApp">
    <span id="test"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

var scope = angular.element("#test").scope();
scope.doSomething();
Run Code Online (Sandbox Code Playgroud)

您的scope变量现在可以访问myApp控制器上定义的所有方法.