using factory in angularjs getting Error: [$injector:undef]
using factory in angularjs getting Error: [$injector:undef]
我正在创建一个新的 angular 应用程序并使用工厂,但是当我收到
错误时
错误:[$injector:undef] http://errors.angularjs.org/1.4.5/$injector/undef?p0=数据
出错时(本机)
在 https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:6:416
在 Object.$get (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:37:32)
在 Object.e [作为调用] (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:39:96)
在 https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:40:410
在 d (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:38:308)
在 e (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:39:64)
在 Object.g.instantiate (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:39:213)
在 b.$get (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:80:257)
在 s (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js:12:165)
var app = angular.module('testapp', ['ngRoute']);
app.config(['$routeProvider',
function ($routeProvider) {
$routeProvider.
when('/userlist', {
title: 'List of all the users',
templateUrl: 'userlist.html',
controller: 'listuser'
})
.when('/profile',{
title:'user detail page',
templateUrl:'profile.html',
controller:'listuser'
})
.otherwise({
redirectTo: '/userlist'
});
}])
app.factory("Data", ['$http','$log',
function ($http,$log) {
var obj = {};
obj.post = function (q, object) {
return $http({
method: 'POST',
url:'userdetail.php',
data: object.user
})
.then(function (results) {
$log.log(results);
return results.data;
});
};
}]);
app.controller('listuser',['Data', function ($scope,$http,$log,$window,Data) {
$scope.userdetail = {};
var init = function () {
$http({
method: 'POST',
url: 'apisource.php',
})
.then(function (results) {
$scope.data=results.data;
});
};
init();
$scope.douserdetail = function(user) {
Data.post({
user: user
}).then(function (results) {
if (results.status == "success") {
//$location.path('dashboard');
}
});
};
}]);
查看堆栈跟踪中提供的 link。您的工厂必须 return 一个值:
app.factory("Data", ['$http','$log',
function ($http,$log) {
var obj = {};
...
return obj;
}]);
angular 中的工厂函数应该 return 一个对象,但是您的 "Data"
工厂没有 return 任何东西。只需在工厂函数的末尾添加以下内容即可解决问题:
return obj;
有很多错误,在控制器中你正在使用$http,目的是什么
您正在 init 内部调用 init() ,这将导致无限循环
您的服务未返回任何内容
我建议先检查基础知识angular
我正在创建一个新的 angular 应用程序并使用工厂,但是当我收到
错误时错误:[$injector:undef] http://errors.angularjs.org/1.4.5/$injector/undef?p0=数据 出错时(本机) 在 https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:6:416 在 Object.$get (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:37:32) 在 Object.e [作为调用] (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:39:96) 在 https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:40:410 在 d (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:38:308) 在 e (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:39:64) 在 Object.g.instantiate (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:39:213) 在 b.$get (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js:80:257) 在 s (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js:12:165)
var app = angular.module('testapp', ['ngRoute']); app.config(['$routeProvider', function ($routeProvider) { $routeProvider. when('/userlist', { title: 'List of all the users', templateUrl: 'userlist.html', controller: 'listuser' }) .when('/profile',{ title:'user detail page', templateUrl:'profile.html', controller:'listuser' }) .otherwise({ redirectTo: '/userlist' }); }]) app.factory("Data", ['$http','$log', function ($http,$log) { var obj = {}; obj.post = function (q, object) { return $http({ method: 'POST', url:'userdetail.php', data: object.user }) .then(function (results) { $log.log(results); return results.data; }); }; }]); app.controller('listuser',['Data', function ($scope,$http,$log,$window,Data) { $scope.userdetail = {}; var init = function () { $http({ method: 'POST', url: 'apisource.php', }) .then(function (results) { $scope.data=results.data; }); }; init(); $scope.douserdetail = function(user) { Data.post({ user: user }).then(function (results) { if (results.status == "success") { //$location.path('dashboard'); } }); }; }]);
查看堆栈跟踪中提供的 link。您的工厂必须 return 一个值:
app.factory("Data", ['$http','$log',
function ($http,$log) {
var obj = {};
...
return obj;
}]);
angular 中的工厂函数应该 return 一个对象,但是您的 "Data"
工厂没有 return 任何东西。只需在工厂函数的末尾添加以下内容即可解决问题:
return obj;
有很多错误,在控制器中你正在使用$http,目的是什么
您正在 init 内部调用 init() ,这将导致无限循环
您的服务未返回任何内容
我建议先检查基础知识angular