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

angularjs set default value ng-model using value from another ng-model

我想将用户在另一个表单字段 select 选项中设置的 ng-model 的值作为相同表单中的初始值传递给另一个 ng-model。
在此示例中,我希望 myModel.fieldB 的 ng-init 值是值 myModel.fieldA.subfield,这在 span 元素的值中成功评估,但在 [=12 的 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>

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

就像这样:

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

然后:

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

这是一个有效的 plunker

那是因为当你传递文字值时它是常量并且不会改变但是当你像这样传递变量值时 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>