angularjs使用来自另一个ng模型的值设置默认值ng-model

时间:2017-02-18 10:50:36

标签: javascript angularjs angularjs-ng-model angularjs-ng-init

我想将用户在另一个表单字段中设置的ng-model的值传递给另一个ng-model作为同一表单中的初始值。
在此示例中,我希望myModel.fieldA.subfield的ng-init值为值myModel.fieldB,这是成功评估span元素的值,但不是{{1的ng-model模型},意思是ng-init="myModel.fieldB = myModel.fieldA.subfield"中没有发生任何事情。
但是,当我传递字符串文字值时,它可以工作,例如ng-init="myModel.fieldB = 'some example'"

<span class="form-group" ng-model="myModel.fieldB" ng-init="myModel.fieldB = myModel.fieldA.subfield">{{myModel.fieldA.subfield}</span>

3 个答案:

答案 0 :(得分:1)

为什么不简单地为您的选择ng-change使用input指令,并将myModel.fieldA.subfield的值分配给myModel.fieldB

就像这样:

ng-change="assignValue(myModel.fieldA.subfield)"

然后:

$scope.assignValue = function(val) {
    if (val) {
      $scope.myModel.fieldB = val;
    }
  }

这是一个有效的plunker

答案 1 :(得分:1)

那是因为当你传递文字值时它是常量并且不会改变但是当你传递像ng-init="myModel.fieldB = myModel.fieldA.subfield"(myModel.fieldB)这样的变量值时,它将在创建时仅设置一次这个元素的内容,内部的任何值(myModel.fieldA.subfield),所以要克服这一点,你可以在select元素上使用ng-change,如下所示:

<select data-ng-model="myModel.fieldB" ng-change="myModel.fieldA.subfield = myModel.fieldB">
   <option value="option1">option1</option>
   <option value="option1">option1</option>
</select>
<span class="form-group">{{myModel.fieldA.subfield}}</span>

答案 2 :(得分:0)

使用ng-bind代替ng-model

<span class="form-group" ng-bind="myModel.fieldB" ng-init="myModel.fieldB = myModel.fieldA.subfield">{{myModel.fieldA.subfield}</span>