这一定已经完成了,而我在这一点上还缺少有关Angular工作方式的一些信息。

简而言之,我有<select ng-model><option ng-repeat/></select>,我不知道如何在页面加载时为其提供默认值。

看法:

<div ng-ctrl="MyCtrl">
  <form ng-submit="submitChoice()">
    <select ng-model='choice'>
      <option ng-repeat='choice in choices' value='{{choice.id}}'>{{choice.id}}</option>
    </select>
  </form>
</div>

方式1 :当用户更新 View (选择他想要的“选择”)时,MyCtrl中使用的$scope可以获取它,并且我可以使用它执行任何操作:

方式2 :但是,反之,如果我想以编程方式为 Controller 设置选项的默认值(在开始时),则无法更改显示的值:
function MyCtrl ($scope) {
  $scope.submitChoice = function() {return;}; // Way1: OK!
  $scope.choice = choice4;                    // Way2: Doesn't change the view!!
}

我猜这是因为ng-repeat中的每个元素都有其自己的作用域(仅供引用,如果我在 View 中硬编码选项而不是ng-repeat,则效果很好)。

如果我很好理解的话,在方式1中,由用途选择的内部范围将choice发出到较高范围。但我不知道该怎么做方法2。

它以简单的方式可行吗?指令是否必要?

最佳答案

您最好将ng-options指令与select指令一起使用。使用select + ngRepeat具有各种限制,最好避免使用。使用ngRepeat生成选项是否有任何特殊原因?

如果您可以共享更多代码(尤其是数据模型的结构),我也许可以提供更多信息。

10-04 21:41
查看更多