角→渲染和克隆元素->访问范围
Angular -> rendered and cloned element -> scope access
我需要能够在渲染和克隆元素的范围内更改变量和使用方法。如何做到这一点?这里是jsfiddle: http://jsfiddle.net/kashesandr/1pwzm1jb/2/
模板:
<div ng-controller="MyCtrl" class="name">
Hello, {{name}}!
</div>
代码:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.name = 'Superhero';
$scope.setName = function(name){
$scope.name = name;
};
}
function update() {
var element = document.querySelector('.name')
var scope = angular.element(element).scope()
var copy = element.cloneNode(true)
document.body.appendChild(copy);
var names = document.querySelectorAll('.name');
console.log(names);
var element1 = names[0];
var scope1 = angular.element(element1).scope();
scope1.$apply(function(){
scope1.setName(123);
});
var element2 = names[1];
var scope2 = angular.element(element2).scope();
scope2.$apply(function(){
scope2.setName(234); // this must work
});
}
setTimeout(update, 1500);
谢谢!
不幸的是,如果按照你所说的去做,在Angular中是不允许的。不允许克隆或复制窗口或作用域对象。这意味着您不能复制<div class="name">{{name}}</div>
,将副本附加到主体,修改它,然后运行$digest循环。这将导致无限循环/循环引用。
有关ng:cpws的详细信息请参阅此链接
https://docs.angularjs.org/error/ng/cpws如果你可以访问源代码(我认为你可以),你应该尝试更新angular应用,而不是试图从外部修改它。您在这里描述的内容很容易在应用程序范围内完成。
相关文章:
- 可以't访问JavaScript函数范围中的变量
- 如何从chrome扩展访问angularjs根范围
- 访问内部功能范围的元素,而不是敲除中的外部
- 将 NodeJS 模块范围变量作为对象访问
- 主干.js(具有 Require.js)变量/范围访问问题
- AngularJS:从控制器访问特定的指令范围
- Angularjs:访问范围变量数组并计算平均值
- 如何访问嵌套的表单ng包含范围/字段
- 有棱角的如何获得ng重复项范围的访问权限
- 我怎么把范围弄错了?无法从jQuery访问此函数;.在“上”;
- webGL,javascript:尝试访问属性1中超出范围的顶点
- 是否有任何方法可以访问外部范围's变量
- 淘汰赛:can't从嵌套foreach访问父级范围的属性
- WebDriver Selenium:Javascript代码覆盖范围,无需服务器访问
- JS范围访问
- 从不同范围访问较新版本的变量(JavaScript / jQuery)
- 从外部绑定范围访问knockoutjs ViewModel
- 使用指令将具有范围访问权限的功能附加到html元素
- angular 1.5无范围访问http.get中的数据
- 从其他范围访问对象(javascript)