Angularjs Rails资源save()函数无法从控制器工作

时间:2014-09-10 02:17:38

标签: ruby-on-rails angularjs ruby-on-rails-4 angularjs-service angular-resource

我在我的Rails Angular App中使用angularjs-rails-resource

帐户资源

myApp.factory('Account', ['railsResourceFactory','railsSerializer', function                          
  (railsResourceFactory,railsSerializer) {
    return railsResourceFactory({
     url: '/accounts',
     name: 'account',
     serializer: railsSerializer(function () {
       this.nestedAttribute('address');
    })
  });
}]);

UserController.js

function userController($scope,$location,Auth,$rootScope,$http,Useraccount,Account) {
  $scope.profileUpdate = function() {

   //Useraccount.save(); // THIS WORKS

   $scope.account = {}
   $scope.account.save()  // Throwing error : undefined function save
 }
}

UserAccount服务

myApp.service('Useraccount',function(Auth,$location,$rootScope,Account){
 var account;
 var query = function(){
 var promise = Account.query().then(function (results) {
   account = results;
 }, function (error) {
   alert("Went Wrong while fetching User Account!!")
 });

 return promise;
}

var save = function() {
  account.save().then(function (results) {
   console.log(results);
  }, function (error) {
    alert("Went Wrong!!")
  });
 }
return {
   query:query,
   save:save
  }
 })
});

我不确定为什么UserController的save函数不起作用,虽然我已将Account资源导入为依赖项。我在服务中做了同样的事情,但它在那里工作。任何线索都会有所帮助。

1 个答案:

答案 0 :(得分:1)

您实际上正在为空的javascript对象调用save()方法。我不明白这一点。

无论如何,你需要一个Angular对象来做到这一点。因此要么从服务器加载帐户数据。

$scope.accounts = Account.query(); // Will be an Array of accounts

或创建帐户的新实例

$scope.account = new Account(); // An empty object