Javascript 为什么赢了';这不是一个事件中的资源火灾吗?
我有一个包含资源的对象。当我使用此资源在应用程序的大多数部分发出请求时,它工作正常。但是,在由于指令中的事件(jQuery draggable和dropable,元素被删除时触发事件)而被调用的函数内部,资源不会触发请求。为什么会这样?是否有解决方法或修复方法 例如:Javascript 为什么赢了';这不是一个事件中的资源火灾吗?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我有一个包含资源的对象。当我使用此资源在应用程序的大多数部分发出请求时,它工作正常。但是,在由于指令中的事件(jQuery draggable和dropable,元素被删除时触发事件)而被调用的函数内部,资源不会触发请求。为什么会这样?是否有解决方法或修复方法 例如: //function called by directive Project.appendTemplate = function(project, tID) { console.log('appendTemplat
//function called by directive
Project.appendTemplate = function(project, tID) {
console.log('appendTemplate Called'); //this happens
Template.resource.get({'ID' : 1}, function(result) {
console.log('hello'); //this does not
});
}
//called when this service is loaded
Template.resource.get({'ID' : 1}, function(result) {
console.log('hello'); //happens
});
您需要在调用
scope.$apply()
或$scope.$apply.$apply时包装事件处理程序代码(取决于您是否在指令的链接或控制器方法中),如下所示:
每当在事件回调中从Angular框架外部发生此类更改时,$apply()
都会将该更改告知Angular
更多信息。您是否会创建一个plunker或JSFIDLE来复制此问题?我无法使用。范围来复制您的问题。如果您需要从框架外部更新角度内的模型,则使用$apply()
。触发$http
请求这样的事情是不必要的。@rtcherry我想我是在做一点假设,他不只是想用回调的结果
记录一些事情。他可能已经用日志替换了那里的代码,以缩短他的帖子。假设他以某种方式修改模型,而不是记录“hello”,那么将需要$apply
。
Project.appendTemplate = function(project, tID) {
scope.$apply(function(){
console.log('appendTemplate Called'); //this happens
Template.resource.get({'ID' : 1}, function(result) {
console.log('hello'); //this does not
});
});
}