【问题标题】:textarea two way binding not working with ng-modeltextarea 双向绑定不适用于 ng-model
【发布时间】:2018-05-14 04:53:16
【问题描述】:

我正面临 Angular js 的一个奇怪问题。 我正在使用 textarea 并为此设置了默认值。但是当我手动更改文本区域中的值时,它不会在我的控制器中更新。

另外一个作用域也没有被绑定到默认值中。

我的 HTML

<div ng-controller="req" class ="ng-cloak">
 <form name="dynamic_fields_tm" ng-submit="goDynamicTm()">
                         <input type="text" ng-model="tmDynam.one">
                         <input type="submit" value="Go!" ng-show="tm_dynamic1">
                     </form>
 <div class="request" ng-if="postrequest_disp">
   <textarea>{{postrequest}}</textarea> 
 </div>
</div>

Js

app.controller('req', function($scope ,$rootScope ,$http ,$location ,$window, $timeout) {
 $scope.postrequest = "{'event':{'event_id':" + $scope.tmDynam.one+"} ,'note':'Testing', 'is_display_price': 'true', 'ticket_ids':["+$scope.tmDynam.two+"] }";
       $scope.postrequest_disp = true;
       $scope.tm_dynamic1 = true;
       $scope.goDynamicTm = function()
       {             
          console.log($scope.postrequest);
       }
});

第一期。在控制台中,我只收到默认值..当我在 textarea 中更新时,我没有收到更新的值。 其次是 $scop.tmDynam.one 没有被 $scope.postrequest 更新。 我也使用了 ng-model 而不是 {{}}。但是问题仍然存在 请帮忙

【问题讨论】:

    标签: angularjs textarea angular-ngmodel two-way-binding


    【解决方案1】:

    由于您在 ng-if 内使用 textarea,它会创建一个隔离范围。因此您需要访问父范围。在 textarea 中使用 ng-model$parent.postrequest

    演示

    var app = angular.module("myApp",[]);
    app.controller('req', function($scope ,$rootScope ,$http ,$location ,$window, $timeout) {
    $scope.tmDynam = {one:'', two: ''}
     $scope.postrequest = "{'event':{'event_id':" + $scope.tmDynam.one+"} ,'note':'Testing', 'is_display_price': 'true', 'ticket_ids':["+$scope.tmDynam.two+"] }";
           $scope.postrequest_disp = true;
           $scope.tm_dynamic1 = true;
           $scope.goDynamicTm = function()
           {           $scope.postrequest = "{'event':{'event_id':" + $scope.tmDynam.one+"} ,'note':'Testing', 'is_display_price': 'true', 'ticket_ids':["+$scope.tmDynam.two+"] }";   
              console.log($scope.postrequest);
           }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <div ng-app="myApp">
    <div ng-controller="req" class ="ng-cloak">
     <form name="dynamic_fields_tm" ng-submit="goDynamicTm()">
                             <input type="text" ng-model="tmDynam.one">
                             <input type="submit" value="Go!" ng-show="tm_dynamic1">
                         </form>
     <div class="request" ng-if="postrequest_disp">
       <textarea ng-model="$parent.postrequest"></textarea> 
     </div> 
    </div>
    </div>

    【讨论】:

    • ...有效..但是我的第二个问题仍然存在...当我在与 $scope.tmDynam.one 绑定的文本字段中输入值时..它的值没有更新到我的 $scope .postrequest。因为我已经将它与我的字符串连接起来了。这两种方式绑定在这里不工作吗..?
    • 因为角度双向绑定不会影响对象属性。将$scope.postrequest = "{'event':{'event_id':" + $scope.tmDynam.one+"} ,'note':'Testing', 'is_display_price': 'true', 'ticket_ids':["+$scope.tmDynam.two+"] }"; 移入goDynamicTm 函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2023-03-05
    相关资源
    最近更新 更多