2014-09-01 103 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