为什么需要一个额外的对象?

Eug*_*gen 5 javascript angularjs

我正在检查 Angular Bootstrap UI,尤其是服务$modal并注意到一件有趣的事情。

在他们的示例中,' http://plnkr.co/edit/E5xYKPQwYtsLJUa6FxWt?p=preview ' 在附加到弹出窗口的控制器中,他们将所选项目包含在另一个内部属性中

$scope.selected = {
   item: $scope.items[0]
};
Run Code Online (Sandbox Code Playgroud)

而不是刚刚

$scope.selected = $scope.items[0];
Run Code Online (Sandbox Code Playgroud)

事实上,他们的代码按预期工作,而我的版本却没有。

为什么需要这个?这里的 JavaScript 问题是什么?

谢谢

Lar*_*ner 1

他们嵌套该属性是因为他们想在模式中执行此操作:

<li ng-repeat="item in items">
    <a ng-click="selected.item = item">{{ item }}</a>
</li>
Run Code Online (Sandbox Code Playgroud)

ng-repeat为每个创建一个子范围<li>(模式也创建一个子范围);如果您有$scope.selected = $scope.items[0];selected则 ng-click 中的设置将在子范围中设置属性,但不会在父范围中设置属性(这就是您在该示例中想要的)。请参阅我的回答。如果是

$scope.selected = {
    item: $scope.items[0]
};
Run Code Online (Sandbox Code Playgroud)

更改将影响父范围的selected对象。