Angular 的工厂方法未被调用

Angular's factory method not being called

在我的 services.js 文件中,我有以下 $resource 连接到我的 RestAPI...

app.factory('Profile', function ($resource) {
    console.log("here");
    var Bear = $resource('http://192.168.0.11:3000/api/bears/:id', {id:'@id'});
    Bear.save({name:"Yogi"});
});

现在,我正在尝试测试它是否有效,但从未达到 console.log("here");

这是我的 app.js 文件,其中包含我的控制器...

var app = angular.module('starter',
      [
      'ionic',
      'ngResource'
      ]
   );

app.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
    if (window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);

    }
    if (window.StatusBar) {
       // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }
   });
 });

如您所见,我包含了 ngResource 但仍未调用工厂方法。我做错了什么?

正如@Phil 提到的,您的工厂只是坐在那里无所事事,因为:

  1. 它没有注入任何控制器或服务。 (或者在你的情况下 app.run 块)

解决方案:将其注入到 $ionicPlatform

旁边的 app.run 块中
  1. 应该使用名为 saveBear 的方法从 app.run 块调用 Profile 工厂。

解决方法:将services.js中的代码改成这样:

app.factory('Profile', function ($resource) {
    var saveBear = function(){
      console.log("here");
      var Bear = $resource('http://192.168.0.11:3000/api/bears/:id',{id:'@id'});
      Bear.save({name:"Yogi"});
    }

  return {
    saveBear: saveBear
  }

});

然后使用语句

调用运行块中的方法

Profile.saveBear();