量子器by.binding()返回两个绑定组合

时间:2017-05-23 22:46:33

标签: javascript angularjs binding protractor angularjs-e2e

我正在使用AngularJs 1.6和量角器进行e2e测试。

我的HTML模板中有以下代码

<h1>{{exercise.a}} * {{exercise.b}}</h1>

然后在量角器中我正在测试页面并希望获得该绑定的值。我做了

element(by.binding('exercise.a')).getText().then(console.log)

,结果是exercise.aexercise.b的组合,即'9 * 2',而我期望结果为'9'。我得到完全相同的结果是当我尝试获得exercise.b的值时,'9 * 2',而我期望'2'

我花了一段时间才找到解决方法。在我将代码修改为此后,它开始正常工作

<h1><span>{{exercise.a}}</span> * <span>{{exercise.b}}</span></h1>

似乎某些东西将两种绑定结合在一起。

任何人都可以解释它为什么会发生以及如何在没有解决方法的情况下使其工作。

1 个答案:

答案 0 :(得分:0)

根据我的理解,Angular会将您的h1标记与观察者关联到exercise.aexcercise.b。原始绑定已经消失,因为h1标记的内部主体已被文本9 * 2替换。

然而,Angular会与观察者一起记住插值函数,这样当它们中的任何一个发生变化时,它会重新计算新的值。

也就是说,这里的两个绑定都指向h1的主体,在你的情况下9 * 2。将它们分开的唯一方法是使用包装元素(在您的示例中为span)或使用ng-bind,但同样需要两个元素。