Javascript 简单角度服务混淆
简单地说,角度服务总是让我感到困惑,我似乎通过尝试和错误让它们工作。我想知道为什么在这种情况下,数据返回未定义 应用程序模块:Javascript 简单角度服务混淆,javascript,angularjs,angularjs-service,Javascript,Angularjs,Angularjs Service,简单地说,角度服务总是让我感到困惑,我似乎通过尝试和错误让它们工作。我想知道为什么在这种情况下,数据返回未定义 应用程序模块: var app = angular.module('myApp', ['services']); 服务: //creating a service module var appServices = angular.module('services', []); appServices.factory('Data', function(){ return {messa
var app = angular.module('myApp', ['services']);
服务:
//creating a service module
var appServices = angular.module('services', []);
appServices.factory('Data', function(){
return {message : "I am data"}
});
控制器:
app.controller('firstCtrl',['Data',
function($scope, Data){
//get data from the service
$scope.data = Data;
console.log(Data);
}]);
app.controller('secondCtrl',['Data',
function($scope, Data){
//get data from the service
$scope.data = Data;
}]);
如果我控制台日志数据,我只会得到“未定义”。
我只是想做一个简单的例子来返回对象{消息:“我是数据”}
所以
$scope.data=数据
然后在视图中
data.message=“我是数据”
如果您能解释一下为什么这不起作用,我将不胜感激。谢谢您没有将
$scope
注入控制器。将其更改为:
app.controller('firstCtrl', [
'$scope', // There should be an element of this array for each parameter
'Data',
function($scope, Data){
//get data from the service
$scope.data = Data;
console.log(Data);
}
]);
由于您只注入
数据
服务,它被映射到控制器函数的$scope
参数,而没有任何东西被映射到数据
参数(并且由于未隐式分配值的变量的值为未定义
,您可以看到未定义
).您可以使用上述答案,但您可以使用
app.controller('firstCtrl', function($scope, Data){
//get data from the service
$scope.data = Data;
console.log(Data);
});
这将很好地工作,不需要在控制器中传递服务和函数数组,因为第二个参数只是函数可以很好地工作