角`$ watchCollection`在测试中返回未定义的oldVal

彼得·埃里希(Peter Ehrlich)

我正在从标记编译的指令上运行Jasmine规范。

在指令中使用以下方法:

 scope.$watchCollection 'x', ->
    console.log arguments

并进行以下测试:

it "adds to array", ->
  scope.$apply( ->
    scope.x = []
  )
  scope.$apply( ->
    scope.x.push(0)
  )

我得到以下控制台输出:

[undefined, undefined, Scope]
jasmine-specs.js:63717 [Array[0], undefined, Scope]
jasmine-specs.js:63717 [Array[1], undefined, Scope]

这似乎坏了。我希望最后一行的第二个参数是“ Array [0]”,即集合的前一个值。为什么不是呢?

鲨鱼

我能够重现同样的事情在这里,我很困惑过,直到我看到这个在为$ watchCollection角文档

oldCollection对象是以前的收集数据的副本。出于性能方面的考虑,theoldCollection 仅当listener函数声明两个或多个参数时才计算value

此语句引用此代码:

$scope.$watchCollection('x', function() {
    console.log(arguments);
});

与这个:

$scope.$watchCollection('x', function(newVal, oldVal) {
    console.log(arguments);
});

(我知道这没有使用lambda语法,但这是相同的解决方案)

因此,oldCollection除非您实际声明第一个和第二个参数来保存新旧值,否则将始终未定义。然后,它将Array[0]按预期显示。这个笨拙的人会证明这一点。


编辑:我认为其他语法将是:

scope.$watchCollection 'x', (new, old) ->
    console.log arguments

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

角`$ watchCollection`在测试中返回未定义的oldVal

来自分类Dev

角2 @ViewChild返回未定义

来自分类Dev

角服务返回未定义

来自分类Dev

角工厂保持返回未定义

来自分类Dev

角$ .formatDate未定义

来自分类Dev

角$ rootScope。$ on未定义

来自分类Dev

角$ rootScope。$ on未定义

来自分类Dev

角服务返回未定义不是函数

来自分类Dev

角的element.isolateScope()返回未定义

来自分类Dev

角的element.isolateScope()返回未定义

来自分类Dev

范围功能在角茉莉花测试中给出未定义的错误

来自分类Dev

角$ http发布请求在PHP中未定义

来自分类Dev

角错误-ReferenceError:未定义$ modal

来自分类Dev

角材料主题-$ mdThemingProvider未定义

来自分类Dev

角$ resource新实例未定义

来自分类Dev

角未定义,参考错误?

来自分类Dev

角动画跑步者未定义

来自分类Dev

角动画跑步者未定义

来自分类Dev

角服务承诺优先未定义

来自分类Dev

茉莉花角单元测试“无法读取未定义的“属性”

来自分类Dev

角组件测试用例出现错误:类型错误:无法读取未定义的属性“ contractno”

来自分类Dev

角8 @ViewChild返回未定义。无法访问ElementRef

来自分类Dev

角获取检查复选框值返回未定义

来自分类Dev

角“未定义不是函数”定义组件

来自分类Dev

角矩-无法读取未定义的属性'utc'

来自分类Dev

角'PersonCtrl'不是一个函数,未定义

来自分类Dev

带有角路由=未定义的ngTable不是函数

来自分类Dev

角嵌套承诺'无法读取未定义的属性'then'

来自分类Dev

角ngIf:未定义标识符“长度”