无法使用Angular.js从工厂方法返回值

时间:2017-10-24 14:34:36

标签: javascript angularjs

我需要一些帮助。我试图返回值rom actory方法,但无法做到这一点得到一些预期的错误。我在下面解释我的代码。

compliance.factory('showNabh',function($window,$timeout){
    var defaultView=function(){
        return true;
    }
    var auditView=function(){
        return false;
    }
})

compliance.controller('NABHParentController',function($scope,$http,$state,$window,$location,$filter,showNabh){
   $scope.showNabh=showNabh.defaultView();
})

我收到以下错误。

Error: [$injector:undef] http://errors.angularjs.org/1.4.6/$injector/undef?p0=showNabh
    at angularjs.js:6
    at Object.$get (angularjs.js:37)
    at Object.e [as invoke] (angularjs.js:39)
    at angularjs.js:41
    at d (angularjs.js:38)
    at e (angularjs.js:39)
    at Object.instantiate (angularjs.js:39)
    at angularjs.js:80
    at q (angularuirouter.js:7)
    at A (angularuirouter.js:7)

我需要在此时调用defaultView函数,我将获得true值,如果我将调用auditView,我将获得错误值。实际上我需要$scope.showNabh变量全局,以便我可以在任何控制器中为此变量赋值。请帮忙。

1 个答案:

答案 0 :(得分:1)

你工厂里没有退货声明,所以它隐含地返回undefined。试试这个:

compliance.factory('showNabh',function($window,$timeout){
    var defaultView=function(){
        return true;
    }
    var auditView=function(){
        return false;
    }

    return {
        defaultView: defaultView,
        auditView: auditView
    };
})