我有一个select标签,如下所示:
<select ng-change="doSomething()" ng-model="myModel"> </select>
我正在使用jQueryUI控件(组合框),从jQuery触发的事件“更改”不会触发doSomething()。
你知道如何从外部角度触发ng-change?
答案 0 :(得分:54)
问题不在于如何运行某些代码,而在于如何触发更改事件。我找到了一种角度友好的方式来做到这一点。我有一个jQuery UI滑块,可以更改另一个输入的值,该输入上有ng-change。秘诀是,一旦你将它变成一个angular.element,你现在可以访问一个名为triggerHandler的方法。根据我所见,使用它不会被视为不良做法:
angular.element(document.getElementById('test')).triggerHandler('change');
tymeJV的答案在不使用jQuery的情况下直接进行了angular.element("#test")
,但我得到了一个控制台错误和破坏的功能。这个版本没有任何依赖性。
答案 1 :(得分:5)
呃 - 这是一种可怕的做法 - 但你可以使用angular.element
并从位于目标控制器中的元素中获取scope
。
示例:
<div ng-controller="myApp">
<span id="test"></span>
</div>
使用Javascript:
var scope = angular.element("#test").scope();
scope.doSomething();
您的scope
变量现在可以访问myApp
控制器上定义的所有方法。