如何在模型改变时再次绑定角度和绑定?

时间:2014-10-30 16:25:26

标签: angularjs bindonce

有任何解决方案或角度插件可以单向绑定并在模型更改时再次绑定吗? 现在我使用插件bind-once,但它只是第一次绑定然后它破坏观察者。例如:

    <div bindonce="model"><span bo-bind="model.title"></span></div>

2 个答案:

答案 0 :(得分:3)

Angular已经为你做了这个

<div><span ng-bind="model.title"></span></div>

<div><span>{{model.title}}</span></div>

答案 1 :(得分:0)

如何做到这一点:重新更新(ng-if)页面上某些变量的变化。会发生什么,是 dom将被删除,并再次添加,它将再次添加:angular应该将变量绑定到其当前值,这样您就可以保持bind-once并根据需要更新值。

唯一需要注意的是,你需要一个DOM指示器来重新加载。

您可以使用下面的重载指令(我在我的应用中使用):

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
    };
}]);