【问题标题】:ng-repeat inside directive template won't update during test指令模板内的 ng-repeat 在测试期间不会更新
【发布时间】:2014-02-19 10:13:14
【问题描述】:

我有一个角度指令的单元测试。该指令在其模板内有一个ng-repeat,它绑定到指令控制器内的一个数组。当控制器中的方法被调用时,数组会发生变化(这个方法实际上是由一个子指令调用的,比如addMe())。 这在“现实生活”中效果很好,但在 Jasmine 单元测试中却不行。我可以在调试器中看到,所有内容都被调用并且数组具有正确的内容,但不知何故 ng-repeat 不会更新。我什至尝试在更改数组后在控制器内部调用$scope.$digest(),但这也不起作用。 有什么帮助吗? 丹尼尔

模板的相关部分是:

    <div class="step-wizard-header">
        <div class="step" 
            ng-repeat="title in titles" 
            ng-click="selectPage($index, 0)" 
            ng-class="{ active: currentIndex == $index, done: currentIndex > $index }">
            <span class="number">
                {{$index + 1}}
            </span>
            <span class="title">
                {{title.text}}
            </span>
            <div class="substep-holder" 
                ng-show="currentIndex == $index">
                <div class="substep" 
                    ng-repeat="sub in title.subs" 
                    ng-click="selectPage($parent.$index, $index); $event.stopPropagation()" 
                    ng-class="{ active: currentSubIndex == $index, done: currentSubIndex > $index      }">
                    {{sub.text}}
                </div>
            </div>
            <div class="right-arrow" 
                ng-style="{ 'z-index': (titles.length - $index) }">
            </div>
        </div>
    </div>

【问题讨论】:

  • 你能至少和我们分享一些html吗?您可能在标签中有一个不适用于 ng-repeat 的属性
  • 就像我说的,它工作正常,除了在单元测试中。
  • 好的。 . . 抱歉,自 2010 年以来我没有做过任何活跃的 tdd,也没有开发过任何测试
  • 我们可能需要您的测试代码来帮助您;)
  • 我不想分享我自己的代码,而是指向this,这正是我想要的,但在我的环境中也不起作用。也许我的设置存在一般性问题。

标签: angularjs unit-testing jasmine directive ng-repeat


【解决方案1】:

问题是由于ng-animate的版本不兼容造成的。更新所有内容(目前为 1.2.13)解决了这个问题。

【讨论】:

  • 请回答您自己的问题以将其标记为已解决
猜你喜欢
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多