AngularJS 中范围的继承

2023-11-25

在父控制器范围中,我定义了selectedItem其设置为“x”。然后在子范围中,我定义了selectedItem使用 ngModel:

<div ng-app>
  <div ng-controller="CtrlA">
       <div ng-controller="CtrlB">
         <select ng-model="selectedItem" ng-options="item for item in items">
         </select>
      </div>
  </div>
</div>

function CtrlA($scope) {
    $scope.selectedItem = 'x';
    $scope.items = ['x', 'y'];
}

function CtrlB($scope) {}

当页面加载时,selectedItem按预期正确设置为“x”。当我选择“y”时,selectedItem在 CtrlB $scope 中按预期给出“y”。

但当我检查时$scope.selectedItem in CtrlA范围(使用 AngularJS 的 batarang),它给出 'x' 。

js小提琴:http://jsfiddle.net/sudhh/GGKjp/2/

预览页面:http://fiddle.jshell.net/sudhh/GGKjp/2/show/light/(用于使用 angularjs batarang 检查)

Why is $scope.selectedItem in CtrlA范围没有更新为“y”?解释是什么?

我不想使用事件或rootScope更新selectedItem在父范围内(用于学习目的)。


如果您尝试绑定到在父作用域中声明的原语,则子作用域中的 selectedItem 将有效地隐藏父作用域中的同名属性。

在这种情况下有3个选择

  1. 在模型的父级中定义对象,然后引用 子对象中该对象的属性: ref.selectedItem
  2. 使用 $parent.selectedItem (并不总是可行,但比 1 更容易。 在可能的情况)
  3. 在父作用域上定义一个函数,并从子作用域中调用它, 将原始值传递给父级(并不总是可能)

更多关于它的信息https://github.com/angular/angular.js/wiki/The-Nuances-of-Scope-Prototypal-Inheritance

您可以使用第一种方法找到更新的小提琴:http://jsfiddle.net/sudhh/XU2rP/1/

function CtrlA($scope) {
  $scope.items = ['x', 'y'];
  $scope.ref = {
    selectedItem: 'x'
  };
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS 中范围的继承 的相关文章

随机推荐

  • Pyinstaller 与 pandas 和 numpy,exe 在运行时抛出错误

    我正在尝试使用 Pyinstaller 制作一个小型测试程序的 EXE 我创建了一个虚拟环境来缩小 exe 的大小 因为 anaconda 包含它拥有的每个库 运行时出错 Traceback most recent call last Fi
  • 分配Python字典文字:语义有保证吗? [复制]

    这个问题在这里已经有答案了 简单的问题 Python 2 6 6 r266 84292 Aug 9 2016 06 11 56 GCC 4 4 7 20120313 Red Hat 4 4 7 17 on linux2 Type help
  • 如何在 UICollection 补充视图中使用 UIButton?

    我试图将 UIButton 放置在 UICollectionView 补充视图 页脚 中 我已使用故事板将 UIButton 连接到 UICollectionViewCell 的子类 并且可以以编程方式更改其属性 包括背景图像 但是 当我将
  • 允许 Django 管理界面中的用户名中包含“-”字符

    在我们的网络应用程序中 我们需要在用户名中允许使用破折号 我已经使用此正则表达式为消费者注册过程启用了该功能 r w 我如何告诉管理应用程序 以便我可以在 auth gt users 中编辑用户名以允许用户名中使用 字符 目前 我无法编辑任
  • 如何从查询字符串中删除空白值参数

    我有一个搜索表单 有很多选项 通过 Get 请求提交到路线 网址是这样的 http localhost 3000 restaurants search utf8 E2 9C 93 city cuisine number of people
  • System.IO.Directory.GetFiles 的多个文件扩展名 searchPattern

    设置的语法是什么多个文件扩展名 as searchPattern on Directory GetFiles 例如过滤掉文件 aspx and ascx扩展 TODO Set the string searchPattern to only
  • Qt模态对话框和主流程

    我有一个在主窗口中执行某些进程的程序 我需要一个模式对话框 其中显示一些自定义元素以显示进度 它还必须阻止用户与主窗口的交互 显示对话框时应运行主进程 对于这个目的 哪种方法更好 在qt中 实际上 这听起来很简单 除非我误解了你的问题 QD
  • akka-http:带流程的完整请求

    假设我设置了一个任意复杂的Flow HttpRequest HttpResponse Unit 我已经可以使用所述流程来处理传入请求 Http bindAndHandle flow 0 0 0 0 8080 现在我想添加日志记录 利用一些现
  • 发布 Firestore 规则:发生未知错误

    在新创建的项目中 我无法发布对 Firebase 规则的任何更改 即使是简单的更改 例如在文件末尾添加换行符或添加空格 我觉得这可能是 Firestore 中的一个错误 但我想我应该先在这里问一下 Error saving rules An
  • windows相当于./(当前目录)[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 在 Linux 上 当我想执行某些文件并使用相对路径时 例如我想做这样的事情 cd c windows c windows gt System32 ipconfig exe 然而我收
  • 我如何在android中获得两个日期之间的差异?,尝试了所有事情并发布

    我在这里看到了所有的帖子 但我仍然不知道如何获得两个 Android 日期之间的差异 这就是我所做的 long diff date1 getTime date2 getTime Date diffDate new Date diff 我得到
  • 如何使用自动生成和起始值生成休眠 ID

    嗨我写了这样的代码 Id Column nullable false GeneratedValue strategy GenerationType AUTO public int getUserID return UserID 但我从 DA
  • Eclipse 包资源管理器为空

    我是 Eclipse 新手 我似乎无法让包资源管理器配合 这是我当前的文件树 workspace bin var res gui src var all of my source code 我尝试在当前树 workspace workspa
  • 如何在pygame中检测精灵是否被点击[重复]

    这个问题在这里已经有答案了 我是 pygame 的新手 现在我正在使用精灵 我的问题是如何检测精灵是否被点击 我想在单击精灵时执行一些操作 就像它是一个按钮一样 谢谢 Edited 谢谢你 斯蒂芬 另外有没有办法知道被点击的精灵是谁 这是示
  • Fortran 中的自动数组释放

    我正在使用 gfortran std f2008 我有一个返回包含可分配数组的派生类型的函数 该函数在返回之前调用 allocate 看起来数组在分配数组的函数返回后一段时间被自动释放 并且我的程序出现了段错误 什么时候会发生自动释放 我应
  • Bootstrap 3 下拉菜单转换

    首先这是fiddle 只是一个常规的引导下拉菜单 我对 css 做了一些更改 以便下拉菜单出现在悬停 而不是单击 上 但我如何想要一个非常简单的淡入淡出动画 我尝试了 css 转换 但它不起作用 因为 dropdown menu 元素应用了
  • 为什么此正则表达式不适用于东方阿拉伯数字?

    thg435将此答案写入 JavaScriptquestion gt a foo 1234567890 bbb 123456 foo 1234567890 bbb 123456 gt a replace d d d d 3 b g foo
  • 在java中将两个excel文件合并为一个工作簿中的两个工作表

    我在文件夹 C DemoFilesExcel demo1 xlsx 和 C DemoFilesExcel demo2 xlsx 中有两个 xlsx 文件 我想创建一个新的 xlsx C DemoFilesExcel merged xlsx
  • python中psutil单个进程的内存使用情况(以字节为单位)

    如何使用psutil库获取Windows平台上单个进程已使用的内存量 我不想知道百分比 我想知道以字节为单位的数量 我们可以用 psutil virtual memory used 要找到整个操作系统的内存使用情况 以字节为单位 但是每个进
  • AngularJS 中范围的继承

    在父控制器范围中 我定义了selectedItem其设置为 x 然后在子范围中 我定义了selectedItem使用 ngModel div div div div div div