“选择”的异步更新未应用所选属性

时间:2014-10-27 11:36:17

标签: angularjs angularjs-directive karma-runner

我有一个指令,它封装了一个select下拉列表,它从异步Web请求中获取数据。在Web请求完成后,我更新选择的ng-model绑定的变量,并通过范围更新范围。$ apply()。由于Web请求的异步性质,此更新包含在setTimeout中,但在我提供的jsFiddle中,我已经通过setTimeout稍有延迟来模拟此调用。

问题如下:虽然一切都按预期工作,但是如果你检查了select元素,那么选项的选择都有'selected'属性,我依赖它来进行单元测试。如果我摆脱了setTimeout,只需用

更新模型
            scope.currentModel = scope.datalist[_.findIndex(scope.datalist, {
                'code': scope.ngModel
            })];

            scope.$apply();

然后正确的选项获得

  

选择= “选择了”

属性我可以用于我的单元测试。所以我的问题是,当我使用setTimeout时,为什么模型会更新并反映在浏览器中,但是所选的选项没有得到选定的属性?这似乎发生在Safari和Chrome for Mac中,而不是在Windows上进行测试。 jsFiddle here.

0 个答案:

没有答案