繁体   English   中英

AngularJS单向绑定无法正常工作

[英]AngularJS one-way binding not working properly

我试图绑定输入(单向),无论谁更改了它的值,它都将不再正确绑定

    //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,然后我得到value =“ Hello World”,但在屏幕上显示“ Foo”


破解解决方案:

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

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


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

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

编辑:

也许如果您只想使用单向数据绑定,那么div就足以满足您的目的,而不是输入。 然后,您可以根据需要设置样式。

使用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;
            });
        };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM