在service中声明了一个对象并且在内部给这个对象赋值,但是到controller中调用的时候,对象是空的。
//service.js
var test = {};
test = data;
//controller
console.log(service.test);
输出为空,求解?
你可以看看下面这个例子,传送门。
如果上面的地址不能够访问的话,可以看一看下面的代码;是上面的主要部分。
JavaScript:
(function() {
angular.module('MyApp', [])
.service('MyService', MyService)
.controller('MainCtrl', MainCtrl)
MyService.$inject = [];
MainCtrl.$inject = ['MyService'];
function MyService() {
var service = {
sayHello: sayHello
};
return service;
function sayHello() {
console.log('Hi, dreamapple!');
}
}
function MainCtrl(MyService) {
var vm = this;
vm.name = 'dreamapple';
vm.say = say;
function say() {
console.log(MyService); // 这里就是上面你定义的服务
MyService.sayHello();
}
}
})();
HTML
<body ng-app="MyApp">
<div ng-controller="MainCtrl as vm">
<button ng-click="vm.say()">click me</button>
</div>
</body>
取决于你的service
怎么写的,正确姿势:
app.service('TestService', function(){
this.sayHi = function(){
alert('hello world');
};
});
你在调用的地方,就可以这么使用:
app.controller('TestController', function($scope, TestService){
TestService.sayHi();
});