我有一个指令,它构建了一组代表文件夹结构的嵌套<ul>
元素。我用的链接功能来创建新的DOM元素,并将它们添加到指令实例元素:<ul>
树内AngularJS指令 - 重新运行示波器参数更改的链接函数
function link(scope, iElement, iAttr) {
var rootElement = buildChildElement(scope.tree);
iElement.append(rootElement);
}
元素是有线与调用住房指令的控制器功能jQueryUI的的拖/放互动根据拖放事件来更新范围参数。
我希望<ul>
树在scope参数发生变化时自动更新。我已经尝试了手表的功能我的链接函数中:
scope.$watch('tree', function(newTree, oldTree) {
var newRoot = buildChildElement(newTree);
iElement.contents().remove();
iElement.append(newRoot);
}
此作品在一定程度上,而是调用remove()
火灾关闭$watch()
方法,它结束了恢复我的控制器改变第二次。如果我注释掉remove()
,我可以看到写了一个新的<ul>
树,它正确地反映了对Controller中所做参数的更改。
双重射击$watch()
让我觉得我正在讨论这个错误。没有它,我的参数正在更新,但我的<ul>
不会更新(被删除的元素保留在它被删除的地方)。
什么是正确的方法来确保您的指令刷新其中一个范围参数的更改?
我应该使用compile
函数并根据属性数组构建<ul>
树而不是使用link
函数吗?
您可以发布演示? – sh0ber