【发布时间】:2014-02-21 08:43:20
【问题描述】:
我有一个使用 AngularJS 创建的简单数据表。表格的其中一列是根据控制器上的函数计算得出的。
我在页面上有一个打开新模式的按钮。当我使用 UI 引导程序打开模式时,我得到了一个新的隔离范围(根范围的子范围),正如预期的那样。但是,如果我在模式中有输入文本,则此文本字段中的任何按键都会自动调用父作用域上的函数——即使我可以验证作用域是隔离的。
这里是行为的一个 plunkr:http://plnkr.co/edit/JzhxSDcSefDe04Psxq0w
如示例所示,表格的第三列是使用名为“ageNextYear”的函数计算的。在渲染表格时,该函数会按预期多次调用(并且可以在控制台日志中进行验证)。但是,如果我打开模式并在字段中输入一些文本,父范围上的“ageNextYear”函数仍然会被调用(在输入字段中输入一些文本并观察控制台日志输出)。
我不确定这是否是预期的行为,或者我是否做错了什么。我尝试在两个作用域上使用点符号,并明确地将新作用域传递给 $modal.open,但没有任何乐趣。
我可以解决这个问题(通过在“人”上创建一个 watchCollection 并以这种方式更新表格 - 这可能是整体上这样做的更好方法)但我想验证其他人是否也看到了这种行为。
【问题讨论】:
-
您的问题是否可能与指令 modalWindow 使用“transclude”这一事实有关?
标签: javascript angularjs twitter-bootstrap