我的查询很少。请在下面找到它们 -
1)在ng-init中定义的函数,如下所示
Mapper.CreateMap<Output, Input>().ForMember(s => s.InputProperty1, t => t.Ignore());
Mapper.CreateMap<Output, Input>().ForMember(s => s.InputProperty2, t => t.Ignore());
Mapper.CreateMap<Input, Output>();
listOfItems = Mapper.Map<List<Input>, List<Output>>(InputListObject);
错误。将语法更改为变量声明类型或立即调用也不起作用。为什么?因为我们无论如何都可以声明一个变量,对象,数组。为什么不是一个功能?
2)是否为绑定到范围的所有变量创建了$ watch,或者它是仅为视图中显示的范围变量创建的吗?
3)如果您使用小提琴&#39; http://jsfiddle.net/Lvc0u55v/5753/&#39;,则会有> 10 $ digest迭代错误。这是预料之中的。现在请评论和取消注释小提琴。没有错误,怎么样?这里$ scope.a的价值变化无限正确吗?
答案 0 :(得分:1)
让我试着回答你的问题。
1)据我所知ng-init
不应该使用函数表达式。它比较习惯于处理逻辑表达式。你可以看看docs,它还指出了一个简短的例子。正如文档所说:
ngInit指令允许您评估表达式 目前的范围。
2)通常,$watch
与范围的每个变量无关(即使它可以绑定到整个摘要周期)。正如您在示例中所做的那样,您已将$watch
绑定到名为a
的范围变量。因此,每当$scope.a
变量发生变化时,它都会触发。您也可以在这里查看docs。
3)关于这个问题,答案非常简单。我们假设我们从$scope.a = 10
开始(正如您已经完成的那样)。在您运行应用程序的那一刻,您的$watch
将会非常激动。这样做,您将获得以下内容:
nv = 10;
ov = 10;
$scope.a = ov * 9;
假设您$scope.a
现在90
,这显然会再次激活您的观察者。这一次有以下几点:
nv = 90;
ov = 10;
$scope.a = ov * 9;
现在,此时您的新值与以前相同。按照这个速度,观察者不会再次开火,因为价值不会改变(因为它与以前完全一样)。
另一方面,运行$scope.a = nv * 9
将始终更新$scope.a
而此将导致无限循环。
我希望这会有所帮助。