配置Angular以重新评估模糊而不是按键

时间:2014-02-19 09:29:37

标签: angularjs

默认情况下,Angular似乎重新评估其从特定DOM元素(例如文本输入)到按键或粘贴的基础范围属性的绑定 - 即,只要文本输入中的值发生更改。

是否可以让它只刷新模糊的绑定?即做类似的事情:

<div ng-app>
    <div ng-controller="ctrl">
        <input type="text" ng-model="base" ng-update-type="blur"/>
        <input type="text" />
        <span ng-bind="doubled()" />                
    </div>
</div>

采取以下JS小提琴:

http://jsfiddle.net/f76dW/

我希望双倍跨度仅在我将焦点移出第一个输入时更新

2 个答案:

答案 0 :(得分:1)

您可以使用ng-blur和虚拟变量(在这种情况下为base_)来实现这一效果:http://jsfiddle.net/f76dW/1/

模板

    <input type="text" ng-model="base_" ng-blur="updateBase()" />

控制器

function ctrl($scope) {

    $scope.base = $scope.base_ = 1000;

    $scope.updateBase = function () {
        $scope.base = $scope.base_;
    };

    $scope.doubled = function() {
        return $scope.base * 2;
    }
}

答案 1 :(得分:0)

使用ng-model选项。使用模糊黑客很棘手,因为模糊可能不会改变。

<input type="text" ng-model="a.b" ng-change="callScriptThenServer()" ng-model-options={updateOn: 'blur'}"/>