AngularJS暂时禁用某些视图部分进行更新

时间:2016-02-29 15:37:40

标签: javascript angularjs data-binding

我有一个复杂的视图,用户通过模态与许多不同的对象进行交互。无论哪个数据集对应于活动模态,都设置为$ scope.object。这对我需要的东西很有用。唯一的缺点是,在后台,在当前模式下,可见数据消失,因为$ scope.object已更改。因此,出于纯粹的审美原因,我试图想办法暂时禁用AngularJS更新视图的某些部分。我只能想到像这样的hacky:

$('#my-element [ng-model]').attr('ng-model', 'xx-model');
$('#my-element [ng-repeat]').attr('ng-repeat', 'xx-repeat');

然后在必要时撤消操作。但这不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

也许你应该使用不同的控制器,一个用于模态,另一个用于其他目的,以及一个服务来做你想要的。

然后在相应的控制器内使用您自己的服务和依赖注入。

答案 1 :(得分:0)

我很感激帮助。这就是我最终做的事情:当我的$ scope.object发生变化时,我复制了变空的元素。对于用户来说,看起来好像什么都没有改变:

$('[ng-repeat]').each(function() {
    parent = $(this).parent();
    $(parent).addClass('placeholder');
    placeholder = $(parent)[0].outerHTML;
    $(parent).removeClass('placeholder');
    $(parent).after(placeholder);
});

当我的当前对象($ scope.object)被设置回原始数据时,我运行类似的逻辑,删除占位符元素。希望这有助于某人。