5

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

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

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。

它可以以简单的方式实现吗?是否需要指令?

4

1 回答 1

5

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

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

于 2013-01-20T14:53:12.177 回答