$scope.$watch
在调用检索我的数据模型后,我遇到了一个未得到评估的问题。我会解释一下,但对于不耐烦的人,也许你可以根据这个小提琴弄清楚发生了什么:http: //jsfiddle.net/ADukg/3964/。
在我们的 Angular 项目中,我们让一些指令构建自己的数据模型,有时也会将其传递给其他包含的指令。在这种情况下,构建自己的模型myMessages
的指令是 ,其数据传递到的指令是myObjects
。
该myMessages
指令依赖于一个被调用的服务messageManager
来随时获取与其相关的消息(在我们的代码中,这是基于诸如$routeParams
值之类的东西,例如,http://localhost/messages/34
)。对于我的示例,我只是忽略了参数并直接将数据传回。
有趣的是,如果我注释掉第 55 行和第 68 行(包装setTimeout
调用),这段代码可以“正常”工作(我把它放在引号中,因为,我真的不确定它是否真的使用了良好的做法)。但是,将调用保留在那里以模拟 HTTP 请求,指令方法中objects
范围变量的值是空的,并且针对该变量设置的监视在 2 秒后无法运行。myObjects
link
我试图通过在实际方法$scope.$apply
的调用周围和内部显式调用来欺骗手表重新评估,但收到此错误:ctrl.loadData()
loadData
$digest 已经在进行中
查看文档,似乎这是正确的,因为当我们进行这些调用时,我们仍然在 Angular 上下文中(我们在服务中使用 ngResource,所以它不会调用一些 jQuery 上下文或任何奇怪的东西)。objects
无论我尝试什么(包括将$scope.$watch
函数的第三个参数设置为),我似乎都无法在填充数据后重新评估变量的值true
。
任何帮助将不胜感激。