我必须向Angular JS应用程序添加具有回调功能的第三方JavaScript插件。
JavaScript插件提供了如下功能:
thirdPartyFunction(parameter1, parameter2, parameter3, callback);
在回调函数中,我得到插件计算的结果。
回调函数如下所示:
callback(resultobject)
{ ... }
我想在我的角度应用程序中显示结果。如何在$ scope中获得resultObject?到目前为止,尚无法重写JavaScript插件。
我的想法是提供像这样的有角度的服务,但是我应该如何实现该服务?:
app.factory('myservice', function () {
function callback(resultobject) {
???
}
return {
getResult: function(parameter1, parameter2, parameter3) {
thirdPartyFunction(parameter1, parameter2, parameter3, callback);
return ???;
}
};
});
最佳答案
服务可能对您没有帮助。查看角度directives
here。根据插件在页面上的集成方式,您必须创建一个公开插件功能的指令。
指令创建自己的作用域,并且可以广播\发出可以发送到控制器的通道的消息,您可以在控制器上更新模型,在插件回调上调用$ scope.apply(),然后刷新UI
如果您可以直接在Controller中引用该插件,那么异步回调后您唯一需要做的就是更新模型并调用$ scope.apply()