首页 > angular service 问题

angular service 问题

在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();
    
});
【热门文章】
【热门文章】