在另一个js文件中调用角度服务

时间:2017-03-31 13:11:05

标签: javascript angularjs service

我有一些javascript和html文件:User.jsindex.htmlDoor.js

我想使用User.js文件中的任何函数。

我在功能getUserInfo文件的user.Js中呼叫Door.js doorApplicationLoginPage.service

  

错误:[$ injector:unpr]未知提供者:UserServiceProvider< - UserService< - PerioMainController

var doorApplicationLoginPage = angular.module("PerioLoginPage", []);

doorApplicationLoginPage.service('UserService', function () {

    this.getUserInfo = function () {
        alert("getUserInfo");
    }

    this.reLoginUser = function () {
        alert("reLoginUser");
    }

});


var doorApplication = angular.module("PerioDoorApplication", []);

doorApplication.controller("PerioMainController", function ($scope, $http, $sce, UserService) {


    UserService.getUserInfo();

});

谢谢。

4 个答案:

答案 0 :(得分:1)

您正在注入service未引用的module

请参阅:

PerioLoginPage service中引用了 UserService module PerioDoorApplication controller中引用了 PerioMainController module

你要么:

  1. 引用与控制器相同的模块中的服务。
  2. 注入模块,其中服务被引用到引用控制器的模块。

答案 1 :(得分:0)

在这种情况下,我可以看到你有两个模块Periodicloginpage和periodicdoorapplication。因此,两个模块中定义了两个服务。因此,您必须将Periodicloginpage作为periodicdoorapplication的依赖项。

ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
    Long timeStampLong = (Long) map.get("timeStamp");
    String timeStamp = getTimeDate(timeStampLong);
    arrayList.add(timeStamp);

    arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list, arrayList);
    listView.setAdapter(arrayAdapter);
}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(listener);

答案 2 :(得分:0)

My login js file

My door js file

我想在“door.js”中的user.js中使用“getUserInfo”函数任何函数

答案 3 :(得分:0)

正如我在评论中所说,至少有两件事要做:

您需要从服务(UserService)返回要使用的功能:

return{
    getUserInfo: getUserInfo, 
    reLoginUser: reLoginUser
};

您的模块需要引用定义服务的模块:

angular.module('PerioDoorApplication', ['PerioLoginPage']);

在你的PerioMainController&#39;中,一个更好的写作方式是:

doorApplication.controller('PerioMainController', ['$scope', '$http', '$sce', 'UserService', 
    function($scope, $http, $sce, UserService){
        [...]
    }
]);