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 提到的,您的工厂只是坐在那里无所事事,因为:
- 它没有注入任何控制器或服务。 (或者在你的情况下 app.run 块)
解决方案:将其注入到 $ionicPlatform
旁边的 app.run 块中
- 应该使用名为 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();
在我的 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 提到的,您的工厂只是坐在那里无所事事,因为:
- 它没有注入任何控制器或服务。 (或者在你的情况下 app.run 块)
解决方案:将其注入到 $ionicPlatform
旁边的 app.run 块中- 应该使用名为 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();