我需要能够在渲染和克隆元素的范围内更改变量并使用方法。怎么做到这一点? 这是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);
谢谢!
答案 0 :(得分:1)
不幸的是,你提出的建议,如果完全按照你的意思说明必须要做的话,在Angular中是不允许的。不允许克隆或复制窗口或范围对象。这意味着您无法复制<div class="name">{{name}}</div>
,将副本附加到正文,修改它,然后运行$ digest循环。这将导致无限循环/循环引用。
有关ng:cpws
的详细信息,请参阅此链接https://docs.angularjs.org/error/ng/cpws
如果您可以访问源代码,我会假设您这样做,您应该探索更新角度应用程序,而不是尝试从外部修改它。您在此处描述的内容很容易在本申请的范围内完成。