从AngularJs外部更新作用域,而不使用angular.element.scope"
Updating scope from outside AngularJs without using "angular.element.scope"
我希望能够从Angular外部的函数中更新Angular中的作用域。
。,如果我有一个jQuery插件返回一个成功回调,我希望能够从成功回调更新范围。我看到的每个解决方案都涉及调用angular.element(selector).scope
,然后在返回的作用域上调用$apply
。然而,我也看到许多评论表明,当调试信息关闭时,这不起作用,因此不建议这样做,但我还没有看到任何替代解决方案。
有没有人知道从Angular外部更新作用域而不使用angular.element(selector).scope
的方法?
以下是文章中接受的解决方案:
"如果你想从AngularJs控制之外对范围值进行任何更改,如jQuery/javascript事件处理程序,你需要使用$scope.$apply()
。
function change() {
alert("a");
var scope = angular.element($("#outer")).scope();
scope.$apply(function(){
scope.msg = 'Superhero';
});
}
这是一个警告,.scope()
不工作时,调试数据关闭后:
"根据文档,使用.scope()
需要启用调试数据,但由于速度原因,不建议在生产中使用调试数据。下面的解决方案似乎围绕着scope() - rtharry Dec 5 '14 at 15:12 "
在这篇文章或其他类似的文章中,我没有看到任何替代使用。scope()的解决方案。
AngularJS从外部js函数访问作用域
谢谢!
不使用angular.element(selector).scope
的一个可能的解决方案是我在使用FirstCtrl
的窗口对象的控制器中分配范围。我将$window
注入FirstCtrl
控制器,并做了以下操作:
$window.FirstCtrlScope = $scope;
然后从jQuery或其他javascript我可以做:
var scope=window.FirstCtrlScope;
scope.$apply(function () {
// update the scope
});
这是一个很好的解决方案,还是有更好的解决方案来更新一个范围,而不使用angular.element(selector).scope
?
谢谢!
我认为这两种方式都不好。将控制器设置为全局变量的设计,或者通过html元素访问作用域的设计,会导致带有许多隐藏链接的应用程序无法维护。
如果你需要配合jQuery插件(或其他非angular代码),把它包装成带有清晰API(属性、绑定和回调)的指令。
您可以将范围分配给元素上的数据属性,然后访问该属性。看看angular-ui-bootstrap库在哪里实现了这种方法。
- AngularJS,angular.element($0).scope()揭示了每个控制器的函数
- element.sortable 不是一个函数 Angular
- 即 11 + angularjs 找不到 angular.element(“#idName”) 的范围
- 有没有 angular.element 的简写
- 设置另一个控制器范围变量而不使用 angular.element (Angularjs)
- Angular、Ether Angular.element(“#n”) 或 $(“#n”) 中的有效 jq
- Element.prop('scrollHeight') 为 Angular.js 中的不同列表项返回相同的值
- angularjs:在$compile之前用angular.element包装模板字符串
- 如何从指令的链接函数的“element”参数中选择具有特定ID的元素,使用jQuery而不是angular的jqLite
- angular.element('#someId').scope()在IE 9中返回undefined
- 何时使用Angular的$element
- 为什么不't Angular.element/jqlite查找顶级元素
- Angular:如何监视$element.on
- 在Jasmine测试中窥探Angular element.css函数
- element.is() equivalent in Angular jqLite
- AngularJS angular.element current DOM
- 如何模拟“angular.element”
- AngularJS:我弄不明白为什么嵌套的angular指令在transclude:'element'时
- Angular template with 'element' transclusion
- TypeError: & # 39;未定义# 39;不是一个函数(计算'angular.element(wind