2014-04-09 70 views
0

我有一個angularjs應用程序,根據來自文本框的輸入做一堆計算。我的工作非常好,但如果用戶在輸入框中選擇數字並刪除它們,那麼基於該數字的結果會立即更改爲undefined。在這種情況下,angularjs太快了。從UX的角度來看,我寧願用戶可以自由編輯文本框,並且只有在他們模糊了該框纔會進行計算更新。在輸入模糊之前,我是否可以延遲ng模型的設置?

有沒有辦法做到這一點正確的輸入欄是這樣的:

<input type="text" ng-model="model" custom-magical-directive> 

我知道我可以創建自己的指令與一個孤立的範圍,只有當我準備好更新父模型,但我寧願保持它的清潔,如果我結束了這樣的事情,因爲:

<div custom-isolated-directive ng-model="model"> 
    <input type="text" ng-model="isolatedModel"> 
</div> 

造型將是一個挑戰。

回答

0

如果你不想通過ng-model綁定提供即時雙向的,則可以離開它,並用一個指令來更新模型,當你想:

<input type="text" update-on-blur="data.name" /> 

指令:

app.directive('updateOnBlur', function(){ 
    return { 
    restrict: 'A', 
    scope: { 
     updateOnBlur: '=' 
    }, 
    link: function(scope, element, attr) { 
     scope.$watch('updateOnBlur', function(newVal, oldVal) { 
      element.val(newVal); 
     }); 

     element.on('blur', function() { 
     scope.updateOnBlur = element.val(); 
     scope.$apply(); 
     }); 
    } 
    } 
}) 

這裏是一個演示:http://plnkr.co/dF9JbfPkgRQxWmGp57ap

一個$手錶功能將確保方案變動是在輸入可見。然後,事件處理程序更新模糊模型。

+0

正是我在找什麼!我可能應該自己想清楚這一點,但這是漫長的一天。謝謝。 – theJoeBiz

相關問題