首页 > 解决方案 > 从过滤对象数组的属性中设置 ng-model

问题描述

我有以下内容:

                      <div ng-repeat="scale in LookUpData.AnswerScales | filter:{AnswerScaleTypeId:question.AnswerScaleTypeId}">
                          <label>
                              <input type="radio"
                                     name="QuestionCategoryId{{question.QuestionId}}"
                                     ng-value="scale.AnswerScaleId"
                                     ng-model="(ViewModel.Answers | filter:{QuestionId:question.QuestionId}).AnswerScaleId"
                                     ng-change="scaleQuestionChanged(question.QuestionId, scale.AnswerScaleId)">
                              {{scale.Description}}
                          </label>
                      </div>

我的问题是关于这条线:

ng-model="(ViewModel.Answers | filter:{QuestionId:question.QuestionId}).AnswerScaleId"

ViewModel.Answers 是一个列表,我需要通过 QuestionId 动态过滤它,然后返回 AnswerScaleId 来设置 ng-model。这是行不通的。这可能吗?

标签: angularjsangularjs-ng-repeat

解决方案


您必须将 ng-model 视为要在其中分配值的“变量”...

我的意思是,如果您有一组单选按钮并且这些按钮用于性别选择,那么 ng-model 应该类似于

<label>
    <input type="radio" ng-model="user.gender" value="male">
    Male
  </label><br/>
  <label>
    <input type="radio" ng-model="user.gender" ng-value="dataOrFunction">
    Female
  </label><br/>

所以,换句话说(对我来说)你必须在 ng-model (你的变量名)中使用一个“静态值”,然后你要去分配给那个变量,无论你想要什么值......所以,你put in value 是将分配给您的 ng 模型的内容。

如果您想在那里使用动态值,请使用 ng-value 而不是 value。

Angularjs ng-model 官方文档https://docs.angularjs.org/api/ng/directive/ngModel


推荐阅读