我正在尝试使用Angular中的promises为Dropbox身份验证编写代码。我有一个名为dropboxAuthServ的服务,它返回一个promise对象,其中包含创建的dropbox客户端的实例。
在我的控制器中,我试图使用此promise对象在视图上显示一些文本。我还计划在以后链接promises,这样我就可以使用我在我写的另一个服务中创建的dropboxClient。
问题是它不起作用。我是javascript的Angular和模块化编程的新手。所以我的理解可能有缺陷。请随时分享您的意见。我附上下面的代码。
控制器
myApp.controller('MainCtrl', ['$scope', 'dropBoxAuthServ',
function ($scope, dropBoxAuthServ) {
dropBoxAuthServ
.getDbClient()
.then(function(result){
alert('Success' + result);
});
//$scope.result = dropBoxAuthServ.result;
}]);
服务
var myApp = angular.module('quickPlansApp',[]);
myApp.factory('dropBoxAuthServ', function($q){
var
dropboxClientCredentials,
//dropboxAuthDriver,
dropboxClient;
// Insert your Dropbox app key here:
var DROPBOX_APP_KEY = '';
dropboxClientCredentials = {
key: "xxxxxxxxxxxxxxx"
};
dropboxClient = new Dropbox.Client(dropboxClientCredentials);
return{
getDbClient: function(){
var defer = $q.defer;
dropboxClient.authenticate(function (error, client) {
if (error) {
throw error;
}
$timeout(function(){
defer.resolve({
'DBClient': client
})},1000);
});
return defer.promise;
}
};
});