簡體   English   中英

如何從外部調用Angularjs工廠函數

[英]How to call an Angularjs factory function from outside

我有一個這樣的角度模塊/工廠:

var app = angular.module('webportal', ['vr.directives.slider', 'angular-flexslider', 'LocalStorageModule', 'multi-select']);

    app.factory('portal', ['uri', function (uri) {
        portal = {};
        portal.getURLParameter = function (name) {
            var hash;
            var vars = [];

            var indexOfQuestion = window.location.href.indexOf('?');

            if (indexOfQuestion != -1) {

                var hashes = window.location.href.slice(indexOfQuestion + 1).split('&');
                for (var i = 0; i < hashes.length; i++) {

                    if (typeof name == 'undefined')
                        vars.push(hashes[i]);

                    else {
                        hash = hashes[i].split('=');
                        if (hash[0] = name)
                            return hash[1];
                    }
                }
            }
        };
        return portal;
    }]);

現在,我試圖從外部角度調用getURLParameter ,如下所示:

angular.injector(['webportal']).get('portal').getURLParameter('blah');

當然,這行不通,並且失敗:

錯誤:[$ injector:modulerr]由於以下原因而無法實例化模塊的Webportal:[$ injector:modulerr]由於以下原因而無法實例化模塊vr.directives.slider:由於以下原因,由於以下原因而無法實例化模塊ngTouch:注射器:unpr]未知提供者:ngClickDirectiveProvider http://errors.angularjs.org/1.2.25/ $ injector / unpr?p0 = ngClickDirectiveProvider minErr / ......

那么有人可以告訴我什么是正確的稱呼方式嗎?

戳了一下之后發現了答案:

angular.element(document.body).injector().get('portal').getURLParameter('blaha')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM