有任何解决方案或角度插件以一种方式进行绑定并在模型更改时再次绑定?现在,我正在使用插件bind-once,但是它只是在第一次绑定后就销毁了watcher。示例:
<div bindonce="model"><span bo-bind="model.title"></span></div>
Angular已经为您做到这一点
<div><span ng-bind="model.title"></span></div>
或
<div><span>{{model.title}}</span></div>
您可以如何操作:在更改某些变量后重新引导(ng-if)页面。将会发生的是dom将被删除,然后再次添加,并再次添加:角度应将变量绑定到其当前值,这样您就可以保持一次绑定并根据需要更新值。
唯一的警告是,您需要一个有关何时重新加载DOM的指示器。
您可以使用下面的reload指令(我在我的应用程序中正在使用):
csapp.directive("csReloadOn", ["$timeout", "Logger", function ($timeout, logManager) {
var $log = logManager.getInstance("csReloadOn");
var getTemplate = function () {
return '<div ng-if="doRefreshPageOnModeChange"><div ng-transclude=""></div></div>';
};
var linkFunction = function (scope, element, attrs) {
scope.doRefreshPageOnModeChange = true;
scope.$watch(attrs.csReloadOn, function (newVal, oldVal) {
if (newVal === oldVal) return;
$log.info("changed mode from : " + oldVal + ", to : " + newVal);
scope.doRefreshPageOnModeChange = false;
$timeout(function () { scope.doRefreshPageOnModeChange = true; }, 100);
});
};
return {
restrict: 'A',
transclude: true,
template: getTemplate,
link: linkFunction
};
}]);