使用ng-model后缺少textarea的默认值

时间:2014-08-19 18:22:53

标签: angularjs twitter-bootstrap

我有一个角度应用程序,我在其中使用如下文本框:

    <div class="panel-body text-center">
        <textarea id="mytext" class="form-control" rows="4">John,2
    Jane,3
    John,4
    Jane,5
        </textarea>
    </div>

此处默认加载值John,2 ...等。但是,当我按如下方式引入ng-model访问此数据时,默认值不再显示。可能会发生什么?

<textarea id="mytext" ng-model="mytextvalue" class="form-control" rows="4">

2 个答案:

答案 0 :(得分:12)

来自docs

  

ngModel将尝试通过评估当前范围上的表达式绑定到给定的属性。如果该范围内的属性尚未存在,则将隐式创建该属性并将其添加到范围中。

所以这里发生了以下代码:

<textarea ng-model="mytextvalue" >...</texarea>

处理ng-model指令时,它会在mytextvalue上查找属性$scope。如果找不到,则会创建一个空值,然后继续将该空值分配给您的元素。

如果您想默认值,则必须明确指定mytextvalue的值

您可以使用ng-init

HTML 中执行此操作
ng-init="mytextvalue='John,2\nJane,3\nJohn,4\nJane,5'"

或者您可以在控制器上使用 JavaScript 进行操作:

$scope.mytextvalue = 'John,2\nJane,3\nJohn,4\nJane,5';

答案 1 :(得分:2)

更简洁的方法(仅使用角度):

  

在您的控制器上:

$scope.item = {'mytextvalue' : 'John,2 Jane,3 John,4 Jane,5'};
  你的观点

<textarea ng-model="item.mytextvalue"></textarea>

希望有所帮助!