AngularJS单向绑定无法正常工作

时间:2014-09-01 17:41:16

标签: javascript angularjs

我正在尝试绑定输入(单向),无论谁改变其值,它都不再正确绑定

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

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

这是场景,正在调用getNote并正确填充输入。但是,当我更改输入的值并再次调用getNote时,即使其value属性包含正确的值,输入也不会显示新值。所以它不会向最终用户显示正确的值。

例如:
1- GetNote的第一个值=“Hello World”
2-我将输入值更改为“Foo”作为普通用户
3-再次调用GetNote,我得到值=“Hello World”,但在屏幕上显示“Foo”


黑客解决方案:

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

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


希望有一个优雅的解决方案

2 个答案:

答案 0 :(得分:1)

我认为你应该尝试使用ngValue指令,正如sbaaaang所说。但没有大括号(文档:https://docs.angularjs.org/api/ng/directive/ngValue)。

编辑:

也许如果您只想使用单向数据绑定,div就足以满足您的需要,而不是输入。然后你可以根据需要设计它。

答案 1 :(得分:0)

使用 ng-value =“”代替 value =“”应该修复

我愿意:

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