角度ng-模型从嵌套的ng-repeat结合

时间:2013-01-20 14:46:12

标签: javascript angularjs

这一定已经完成了,我错过了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 :当用户更新视图(选择他想要的“选择”)时,MyCtrl中使用的$scope获取它,我可以用它执行任何我想要的操作:< / p>

方式2 :但是,如果反过来,我想以编程方式为控制器中的选项设置默认值(在开始时),它不能更改显示的值:< / p>

function MyCtrl ($scope) {
  $scope.submitChoice = function() {return;}; // Way1: OK!
  $scope.choice = choice4;                    // Way2: Doesn't change the view!!
}

我想这是因为ng-repeat中的每个元素都有自己的范围(如果我在视图中硬编码选项而不是ng-repeat,则效果很好)。

在方式1中,如果我理解的话,使用选择的内部范围会将choice发送到上部范围。但我不知道怎么做方法2.

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

1 个答案:

答案 0 :(得分:5)

最好将ng-options指令与select指令一起使用。使用select + ngRepeat有各种限制,最好避免使用。使用ngRepeat生成选项有什么特别的原因吗?

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