依赖注入 – 将JS JS SDK注入AngularJS控制器

前端之家收集整理的这篇文章主要介绍了依赖注入 – 将JS JS SDK注入AngularJS控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为Angular创建一个Facebook服务,所以我可以更容易地测试需要使用Facebook JS SDK和Graph API的代码.

这是我到目前为止

app.factory('facebook',function() {
    return FB;
});

window.fbAsyncInit = function () {
    FB.init({
        appId: 'SOME_APP_ID_HERE',// App ID
        status: true,// check login status
        cookie: true,// enable cookies to allow the server to access the session
        xfbml: true,// parse XFBML
        oauth: true
    });
};

// Load the SDK Asynchronously
(function (d) {
    var js,id = 'facebook-jssdk',ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) { return; }
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js,ref);
})(document);

现在,我知道实际的Facebook SDK部分正在运行…但在我的控制器中,引用始终为空.

在我的控制器我只是有这样的东西:

function FooCtrl($scope,facebook) {
    facebook.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            // do something
        } else if (response.status === 'not_authorized') {
            // the user is logged in to Facebook,// but has not authenticated your app
        } else {
            // the user isn't logged in to Facebook.
        }
    });
}

然后,角色抓住它找不到一个FacebookProvider.有什么想法可以如何实现?

用下面的数组括号括起你的工厂功能
app.factory('facebook',[function() {
    return FB;
}]);

API文档不够清楚.具有数组括号的点是可以指定依赖关系.将使用AUTO.$injection注入您的服务创建.但是由于你没有依赖关系,所以它会跳过这个任务:)

无论如何,如果你需要依赖,你可以这样请求他们

app.factory('facebook',["$log",function($someCrazyLoggerService){
    $someCrazyLoggerService.log("I'm Auto Injected crazy Logger");
}]);
原文链接:https://www.f2er.com/javaschema/281839.html

猜你在找的设计模式相关文章