2014-09-01 72 views
0

我想要綁定的輸入(單程),無論是誰,如果我改變其值其不再綁定正確AngularJS單向綁定工作不正常

//controller => on row click => change input 
    $scope.getNote = function (note) 
    { 
     $scope.currentNote = note; 
    }; 

    //view 
    <input type="text" value="{{currentNote.Title}}" > 

這是該方案,getNote被被調用並且輸入被正確填充。但是,當我更改輸入的值並再次調用getNote時,即使輸入的值屬性包含正確的值,輸入也不會顯示新值。所以不知何故,它沒有向最終用戶顯示正確的價值。

如:
1-從GetNote第一個值=「Hello World」的
2 - 我輸入的值更改爲「富」作爲一個普通用戶
3-呼叫GetNote再次和我得到的值= 「Hello World」 的,但在屏幕上顯示 「富」


哈克解決方案:

//controller object value copy using jquery 
$scope.currentNote = jQuery.extend({}, note); 

//view 
<input type="text" ng-model="currentNote.Title" > 


我希望一個優雅的解決方案

+0

你需要使用'' – PSL 2014-09-01 17:49:45

回答

0

使用NG值= 「」 的代替值= 「」應該修復

我會做:

$scope.getNote = function (note) 
    { 
     $scope.currentNote = note; 
    }; 

    //view 
    <input type="text" ng-model="currentNote.Title" ng-value="currentNote.Title" /> 

如果您仍然遇到問題,請嘗試:

$scope.getNote = function (note) 
     { 
      $scope.$on(function() { 
      $scope.currentNote = note; 
      }); 
     }; 
+0

剛剛嘗試過,但現在沒有什麼顯示給最終用戶,即使我可以看到螢火蟲內部的值變化 – rtp 2014-09-01 17:48:21

+0

所以嘗試使用** ng-model =「」**通常形式需要它;)@rtp我更新了答案 – sbaaaang 2014-09-01 17:49:13

+0

ng模型工作正常,但我想單向綁定不是兩種方式:( – rtp 2014-09-01 17:51:50

1

我想你應該嘗試使用ngValue指令,正如sbaaaang所說。但沒有花括號(文檔在這裏:https://docs.angularjs.org/api/ng/directive/ngValue)。

編輯:

也許,如果你只是想使用單向數據綁定一個div會爲你的目的就足夠了,而不是輸入。然後,您可以根據需要設計它。

+0

是的錯別字抱歉;) – sbaaaang 2014-09-01 17:52:30