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

Javascript 无法使用Angular.js从工厂方法返回值,javascript,angularjs,Javascript,Angularjs,我需要一些帮助。我正在尝试从actory方法返回值,但由于出现了一些预期错误而无法返回。我在下面解释我的代码 compliance.factory('showNabh',function($window,$timeout){ var defaultView=function(){ return true; } var auditView=function(){ return false; } }) compliance.contr

我需要一些帮助。我正在尝试从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函数时得到真值,如果调用auditView函数,则得到假值。实际上,我需要$scope.showNabh变量global,以便在任何控制器中为该变量分配任何值。请帮助。

您的工厂中没有return语句,因此它隐式返回undefined。试试这个:

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

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

是,但仍有错误。工厂应返回函数的对象