Javascript 在Angular+中创建隔离作用域的问题;用户界面引导
我有一个简单的数据表,使用AngularJS创建。表中的一列是根据控制器上的函数计算的 我在页面上有一个按钮,可以打开一个新的模式。当我使用UI引导打开一个模式时,我得到了一个新的隔离作用域(根作用域的子作用域),正如预期的那样。但是,如果模式中有输入文本,则此文本字段中的任何按键都会自动调用父作用域上的函数,即使我可以验证该作用域是隔离的 下面是一个行为的例子: 如示例所示,表的第三列是使用名为“ageNextYear”的函数计算的。在呈现表时,会按预期多次调用此函数(可以在控制台日志中进行验证)。但是,如果我打开模式并在字段中键入一些文本,则仍会调用父作用域上的“ageNextYear”函数(在输入字段中键入一些文本并查看控制台日志输出) 我不确定这是故意的行为,还是我做错了什么。我已经尝试在两个作用域上使用点表示法,并显式地将一个新作用域传递给$modal.open,但毫无乐趣 我可以绕过这个问题(通过在“people”上创建一个watchCollection并以这种方式更新表——这可能是一种更好的总体方式),但我想验证其他人是否也看到过这种行为。Simon, 我喜欢你的问题,我在示波器上添加了watch,看到digest循环被调用 $scope.$watch(函数watchMe(scope){console.log('Digest watched me!');}) 以下是带有摘要的叉子。 我不知道这是为什么,但我认为ng repeat中的表达式正在调用摘要,因为它试图对该项上的任何事件的表达式求值 我认为我们应该评估模型中的表达式,并将更新后的模型交给ng repeat来解决问题。Simon, 我喜欢你的问题,我在示波器上添加了watch,看到digest循环被调用 $scope.$watch(函数watchMe(scope){console.log('Digest watched me!');}) 以下是带有摘要的叉子。 我不知道这是为什么,但我认为ng repeat中的表达式正在调用摘要,因为它试图对该项上的任何事件的表达式求值Javascript 在Angular+中创建隔离作用域的问题;用户界面引导,javascript,angularjs,twitter-bootstrap,Javascript,Angularjs,Twitter Bootstrap,我有一个简单的数据表,使用AngularJS创建。表中的一列是根据控制器上的函数计算的 我在页面上有一个按钮,可以打开一个新的模式。当我使用UI引导打开一个模式时,我得到了一个新的隔离作用域(根作用域的子作用域),正如预期的那样。但是,如果模式中有输入文本,则此文本字段中的任何按键都会自动调用父作用域上的函数,即使我可以验证该作用域是隔离的 下面是一个行为的例子: 如示例所示,表的第三列是使用名为“ageNextYear”的函数计算的。在呈现表时,会按预期多次调用此函数(可以在控制台日志中进行验
我认为我们应该评估模型中的表达式,并将更新后的模型交给ng repeat来解决问题。您遇到的问题与模态对话框的范围无关。该问题与在ng repeat表达式中使用函数有关。一般来说,在表达式中使用函数是一个性能问题,但在ng repeat中这是一个更大的问题。根据这篇关于, 在视图或观察者中使用表达式时,您应该始终记住,每次AngularJS认为需要表达式时都会调用该表达式。使用函数无法获得最佳性能,甚至可能会错过一些更改事件 这意味着一个表达
- 不要在表达式中使用函数
- 不要在表达式中使用范围之外的其他数据
- 应用外部数据更改时,请务必使用$scope.$apply()
您遇到的问题与模式对话框的范围无关。该问题与在ng repeat表达式中使用函数有关。一般来说,在表达式中使用函数是一个性能问题,但在ng repeat中这是一个更大的问题。根据这篇关于, 在视图或观察者中使用表达式时,您应该始终记住,每次AngularJS认为需要表达式时都会调用该表达式。使用函数无法获得最佳性能,甚至可能会错过一些更改事件 这意味着一个表达