如何使用外部SDK获得Angular:(例如,在SDK异步调用后更新DOM)
How To Get Angular To Work With An External SDK: (e.g., Update DOM After SDK Async Calls)
我正在构建一个客户端javascript SDK。它使得对外部API的请求变得容易。
但是,当在Angular中使用它时,我必须像这样包含$scope.apply()才能更新DOM。
SDK.getUser(function(response) {
// Have to call $scope.$apply since SDK call is asynchronous and therefore updates outside of the AngularJS digest cycle
$scope.$apply(function() {
$rootScope.user = response.user;
});
}, function(error) {
console.log('Error Fetching User From SDK: ', error);
});
如何修改SDK,使$scope.apply()不必在异步调用完成后由使用SDK的开发人员编写?
我可以将$scope传递到SDK中并在内部进行应用吗?
如何修改SDK,使$scope.apply()不必在异步调用完成后由使用SDK的开发人员编写?
处理它的更好方法是在SDK服务上创建一个angular服务包装器,这样您就不必担心手动调用摘要循环,因为一旦实现了承诺,angular就会为承诺链中的每个回调调用该循环。
app.service('SDKWrapperService', ['$q',function($q){
this.getUser = function() {
var def = $q.defer();
SDK.getUser(function(response) {
def.resolve(response);
},function(error) {
def.reject('Error Fetching User From SDK: ', error);
});
return def.promise;
}
}]);
并将其用作类似的东西:-
app.controller('myCtrl',['$scope','SDKWrapperService', function($scope, SDKWrapperSvc){
SDKWrapperSvc.getUser().then(function(data){
$scope.user = data.user;
})
});
我可以将$scope传递到SDK中并在内部进行应用吗?
我可能不会这么做,因为客户端javascript SDK(非角度)必须知道什么是$scope
,而且它实际上会与角度实现更加紧密地结合在一起。
如果不涉及太多的业务逻辑,您甚至可以在捆绑包中使用$http
的角度版本的服务,供角度开发人员使用。
相关文章:
- Rally App SDK 2.0:在rallymultiobjectpicker重新筛选存储中由托管侦听器调用vali
- Facebook Javascript SDK使用“me”来调用图形api
- 通过Facebook JavaScript SDK进行图形API调用
- Javascript SDK查找调用没有响应
- 如何通过SDK或API调用从Azure获取价格
- 使用Rally SDK 1.33创建一个包含两个findall调用结果的表
- 如何在webview android SDK中调用谷歌搜索按钮
- 如何使用外部SDK获得Angular:(例如,在SDK异步调用后更新DOM)
- 如何在Ajax调用中使用Facebook Javascript SDK添加Facebook共享按钮?
- 如何使用Javascript SDK调用带有参数的云代码函数
- 调用dispatchEvent的附加SDK不会将事件从内容脚本发送到页面
- Javascript SDK:我可以在FB.api()中调用另一个FB.api()吗?
- Facebook SDK for Javascript, FB.login()回调不触发(异步调用永远不会得到响应?)
- 当JS SDK初始化并准备好进行API调用时的回调
- 如何为特定的音轨调用soundcloud sdk
- 如何解决Firefox SDK的错误,其中卸载从来没有被调用作为一个原因
- AWS Lambda调用函数(js sdk): timeout重置为默认值
- 为什么我的AngularJS视图没有得到更新与Parse.com JavaScript SDK AJAX调用后
- 如何强制同步声音云javascript sdk调用
- 原因是“需要有效的签名”;从javascript SDK调用FQL时出现错误