【问题标题】:Update text area when scope is changed范围更改时更新文本区域
【发布时间】:2017-01-09 14:12:31
【问题描述】:

所以我有一个用 ng-list 定义的文本区域,它将数组中的元素分隔到它们自己的行中。

  <textarea data-ng-model="names" data-ng-list="&#10;" data-ng-trim="false"></textarea>

我有一个按钮,可以将内容添加到名称数组中,并且我希望它也显示在文本区域中。

<button data-ng-click='addPlayer()'>Add</button>

$scope.addPlayer = function() {
  $scope.names.push('HODOR' + n++);
}

不幸的是,当更多元素添加到数组中时,文本区域不会更新,即使它们仍然存储在数组中。他们无论如何我可以强迫这种情况发生吗?我尝试使用 $scope.$apply 并没有奏效。这是一个显示错误的plunker。 https://plnkr.co/edit/gaLtvWw3Odhfngrhkitf?p=preview

【问题讨论】:

    标签: angularjs arrays scope angularjs-scope angular-nglist


    【解决方案1】:

    你可能想看看这个:

    Cannot get textarea value in angularjs

    使用 $scope.$apply 不起作用,textarea 是一个指令,并且:

    AngularJS 会在指令的范围内寻找那个变量。它不在那里,因此他走到 $parent 那里。变量在那里,文本被插入到 textarea 中。当更改文本区域中的文本时,Angular 不会更改父变量。相反,它会在指令的范围内创建一个新变量,因此不会更新原始变量。

    【讨论】:

    • 所以如果我理解正确,我应该将 data-ng-model="names" 更改为 data-ng-model="$parent.names",但这样做只会完全断开 textarea从数组。我在这里错过了什么吗?
    • @IFM 使用 controllerAs : controller: "MyController", controllerAs: "myc", 然后在你的控制器中设置值: angular.module('myApp').controller('MyController', function ( ) { this.myText = '虚拟文本'; });然后使用控制器作为标识符将其直接绑定到控制器的属性:
    猜你喜欢
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多