2015-10-06 39 views

回答

0

所以我做了一些研究,似乎並沒有一個原生的方式來做到這一點。我發現這個可能的代碼,以幫助可以工作,但是當我嘗試它,我使用一些自定義的第三方指示有問題,但它可能對誰想做簡單的事情其他人的工作:

https://gist.github.com/kentcdodds/739566ebd3609ac95e61

我發現的唯一功能似乎是做我正在尋找的是ng-if,如果我們知道它是否從真到假,然後回到真,它將在設置爲false時刪除元素和所有角/範圍,然後重新編譯和重新添加時設置爲true(是的,包括重新綁定一次綁定!)。

我一直在努力解決這個問題,並且會回顧它的情況,但最初的測試確實看起來很有希望。對這種方法的任何想法或意見也是受歡迎的。

UPDATE

所以我還是設法得到這個工作。 基本上你把它想重新編譯和重新綁定並添加NG-如果用某種元素的「復位」變量,像這樣:

<div id="dashboard-view" ng-if="reset"> 
    ... Some more code that includes one time bindings i.e. {{::store.name}}... 
</div> 

在你的控制器:

angular.module('sampleApp') 
    .controller('SampleCtrl',['$scope', function($scope){ 
    $scope.reset = true; 

    $scope.dataUpdated = function(){ 
     $scope.store.name = "new name"; 
     $scope.reset = false; 
     $timeout(function(){$scope.reset=true;},50); 
    }; 
}); 

凡dataUpdate可以是任何事件處理程序導致要更新的數據(例如,用於一個新的對象或更新現有的對象形式的形式)的按鈕可以是

<input type="submit" ng-click=dataUpdated> 

我不確定超時是否是最好的方式。當我嘗試只做$ scope.reset = false; $ scope.reset = true;它沒有工作。也許可以嘗試在它們之間注入一個$ scope。$ apply()。如果有人對此有任何意見,請讓我知道。

但是這個作品等一切都將被recomplied(也重新呈現),如果這些值被更改與儀表板#視圖DIV中一次性綁定任何將rebinded。

如果任何人有一個更好的解決辦法或這樣隨意回答爲好方式。我希望這有助於別人,我花了一段時間纔想出這種方法。

UPDATE 2 因此,我對ng-if的源代碼進行了一些研究,並且在角度上存在更高級的概念,因此如果任何人對更純粹的非hacky方式感興趣,好的地方開始。

相關問題