1
我在我的Angular应用程序中使用递归脚本来输出一堆对象的表示形式。有没有办法在AngularJS中强制重新加载递归ng-include?
问题是,如果我动态改变对象的结构,视图不会更新。看来ng-include
不会再生。
有没有办法强制ng-include
在一个视图中重新从头开始工作?
我在我的Angular应用程序中使用递归脚本来输出一堆对象的表示形式。有没有办法在AngularJS中强制重新加载递归ng-include?
问题是,如果我动态改变对象的结构,视图不会更新。看来ng-include
不会再生。
有没有办法强制ng-include
在一个视图中重新从头开始工作?
我有同样的问题。试试ui-if指令,它解决了我的问题。
app.directive("uiIf", function() {
return {
transclude: 'element',
priority: 1000,
terminal: true,
restrict: 'A',
compile: function (element, attr, linker) {
return function (scope, iterStartElement, attr) {
iterStartElement[0].doNotMove = true;
var expression = attr.uiIf;
var lastElement;
var lastScope;
scope.$watch(expression, function (newValue) {
if (lastElement) {
lastElement.remove();
lastElement = null;
}
if (lastScope) {
lastScope.$destroy();
lastScope = null;
}
if (newValue) {
lastScope = scope.$new();
linker(lastScope, function (clone) {
lastElement = clone;
iterStartElement.after(clone);
});
}
iterStartElement.parent().trigger("$childrenChanged");
});
};
}
};
});
当值设置为false时,元素将消失。如果真的,它会再次呈现。
有趣的是,我很快就会尝试一下 – CodyBugstein 2015-05-06 15:00:16
如果要从外部角度更改对象,则可能需要使用$ timeout或$ apply显式触发摘要循环。你尝试过吗? – doldt 2015-04-01 07:54:24
是的,但得到'$ apply()'已经在运行的错误。看起来'$ apply'不会触发'ng-include'来重新运行递归脚本 – CodyBugstein 2015-04-01 08:03:46
一些简单的小提琴会有所帮助。 – 2015-04-01 09:47:50