2016-02-29 71 views
0

我有一個複雜的視圖,用戶通過模態與許多不同的對象進行交互。無論哪個數據集對應於活動模式都被設置爲$ scope.object。這對我所需要的很有用。唯一的缺點是,在後臺,在當前模式下,可見數據消失,因爲$ scope.object已經改變。所以出於純粹的美學原因,我試圖找出一種方法來暫時禁用AngularJS更新視圖的某些部分。我只能想到這樣hacky:AngularJS暫時禁用更新視圖的某些部分

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

然後在必要時倒轉操作。但這不起作用。有任何想法嗎?

+0

不知道什麼*「視圖搞砸了」*的意思。也許你應該處理模型對象的副本,然後合併更改。儘管對問題的瞭解還不夠深入。 – charlietfl

+0

我的意思是背景中的可見數據消失了,因爲$ scope.object已經更改,不再適用於背景中的內容。 – americanknight

+0

演示會有幫助,但我懷疑如果您使用範圍數據的副本將有助於 – charlietfl

回答

0

也許你應該使用不同的控制器,一個用於模態,另一個用於其他目的,以及服務來做你想做的事情。

然後在相應的控制器內使用您自己的服務進行依賴注入。

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)設置回原始數據,我跑相似的邏輯刪除佔位符元素。希望這可以幫助某人。