2015-10-06 49 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方式感兴趣,好的地方开始。

相关问题