我正在尝试在控制器之间共享变量,所以我正在使用角度的工厂。我有以下代码:
var app = angular.module('chartApp', ['ngRoute']);
app.factory('UserVerified', function() {
return {bool: false};
});
app.config(function ($routeProvider) {
$routeProvider
.when('/',{
templateUrl: 'pages/home.html',
controller: 'PredictionController'
})
});
app.controller('PredictionController', ['$scope', '$http', '$interval', function($scope, $http, $interval){
$scope.hasPermission = UserVerified;
}]);
在HTML上,我只是使用hasPermission.bool
来设置<div>
的可见性。
但问题是angularjs无法识别&#34; app.factory&#34;中定义的UserVerified。
我收到以下错误:
ReferenceError: UserVerified is not defined
我提到了以下内容:Share data between AngularJS controllers
我能找到的唯一区别是,我正在使用上述链接中的示例中未使用的依赖项。
答案 0 :(得分:1)
你需要这样做,
app.controller('PredictionController', ['$scope', '$http', '$interval', 'UserVerified', function($scope, $http, $interval, UserVerified){
$scope.hasPermission = UserVerified.bool;
}]);
您需要将服务作为参数传递给控制器
答案 1 :(得分:1)
您需要在控制器中注入自定义服务
app.controller('PredictionController', ['$scope', '$http', '$interval','UserVerified',function($scope,$http,$interval,UserVerified) {
$scope. hasPermission = UserVerified.bool; //true
}]);
为了避免在缩小代码后破坏您的应用程序,您还可以使用$ inject in angularjs来注入依赖。
app.controller("PredictionController",PredictionController);
PredictionController.$inject = [$scope','$http','$interval','UserVerified']//dependencies
function PredictionController($scope,http,interval,UserVerified){
$scope. hasPermission = UserVerified.bool; //true
}
注意:服务名称将在缩小后重命名,并可能沉迷于破坏您的应用程序
答案 2 :(得分:0)
您需要将UserVerified注入您的控制器。
app.controller('PredictionController', ['$scope', '$http', '$interval', 'UserVerified', function($scope, $http, $interval, UserVerified){
$scope.hasPermission = UserVerifiedvalue.;
}]);
另外,在UserVerified中,您将返回一个保留字的密钥。它会起作用,但会造成不必要的混乱。
app.factory('UserVerified', function() {
return {value: false};
});
Here是一名演员。