Angularjs 如何在没有ng模型的select上使用ng更改

Angularjs 如何在没有ng模型的select上使用ng更改,angularjs,Angularjs,需要存在ngModel,但是直接绑定到控制器中的字段是困难的,因为逻辑稍微复杂一些 我有一份包含从数据库中检索到的问题的调查问卷。每个问题可能已经有了答案,我可以通过调用正在查看的调查中的方法来检索答案: vm.survey.GetCurrentAnswerIDForQuestionID(q.ID) 更新时,很难直接绑定到属性,因为如果答案不存在,我需要创建一个实体来存储它,如果答案存在,我会更改或删除它(当用户选择空选项时) 所以我想我需要调用一个方法。像这样: vm.survey.SetCu

需要存在
ngModel
,但是直接绑定到控制器中的字段是困难的,因为逻辑稍微复杂一些

我有一份包含从数据库中检索到的问题的调查问卷。每个问题可能已经有了答案,我可以通过调用正在查看的调查中的方法来检索答案:

vm.survey.GetCurrentAnswerIDForQuestionID(q.ID)

更新时,很难直接绑定到属性,因为如果答案不存在,我需要创建一个实体来存储它,如果答案存在,我会更改或删除它(当用户选择空选项时)

所以我想我需要调用一个方法。像这样:

vm.survey.SetCurrentAnswerIDForQuestionID(q.ID,answerid)

我可以使用此标记正确显示选择列表:

<select ng-init="answerid = vm.survey.GetCurrentAnswerIDForQuestionID(q.ID)">
  <option value=""></option>
  <option ng-repeat="va in q.ValidAnswers | orderBy:'SortOrder'"
          ng-selected="va.AnswerID === q.currentAnswer"
          value="{{va.AnswerID}}">
    {{va.Text}}
  </option>
</select>

{{va.Text}}
现在我想调用一个方法,在用户更改答案时设置答案。大概是这样的:

        <select 
           ng-init="answerid = vm.survey.GetCurrentAnswerIDForQuestionID(q.ID)"
           ng-model="answerid" 
           ng-change="vm.survey.SetCurrentAnswerIDForQuestionID(q.ID, answerid)">
...etc

但这不起作用-当我查看页面时,不再选择正确的项目

您应该使用
ngOptions
使绑定正常工作:

<select 
   ng-init="answerid = vm.survey.GetCurrentAnswerIDForQuestionID(q.ID)"
   ng-model="answerid" 
   ng-change="vm.survey.SetCurrentAnswerIDForQuestionID(q.ID, answerid)"
   ng-options="va.AnswerID as va.Text for va in q.ValidAnswers"
></select>


模型在加载时或选择后不正确?我假设我的问题是不允许使用使用
ng init初始化的变量作为我的模型-不正确,这是有效的