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

标签 javascript angularjs

<分区>

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

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

$scope.selected = {
   item: $scope.items[0]
};

而不仅仅是

$scope.selected = $scope.items[0];

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

为什么需要这个?这里的 JavaScript 陷阱是什么?

谢谢

最佳答案

他们嵌套属性是因为他们想在模态中这样做:

<li ng-repeat="item in items">
    <a ng-click="selected.item = item">{{ item }}</a>
</li>

ng-repeat为每个 <li> 创建一个子作用域(模态也在创建子范围);如果你有 $scope.selected = $scope.items[0]; , 设置 selected从 ng-click 将在子范围内设置属性,但不会在父范围内设置属性(这就是您在该示例中想要的)。另见我的回答 here .在

的情况下
$scope.selected = {
    item: $scope.items[0]
};

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

关于javascript - 为什么需要一个额外的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20687425/

相关文章:

javascript - 印地语内容不通过 JQuery 显示

Mac 上 Webkit 中手势的 Javascript 事件?

javascript - Jquery 图像显示/隐藏不起作用

Javascript - 对象内的函数声明

javascript - Angular TypeScript 服务未定义

angularjs - 是否可以在 Angular Material 的选择选项中输入文本?

javascript - 为什么 karma 不执行任何测试?

javascript - 构建 : Duplicate identifier 'prototype'

javascript - 如何在独立函数中使用 AngularJS api?

javascript - 如何获取当前的 $sce 外部 Controller ?