2014-09-29 3 views
0

Я пытаюсь создать небольшое приложение с angularjs использованием PHP API на отдельном сервере (как на моей локальной машине)

После онлайн-уроки, у меня есть код ниже. Когда вызывается $ save(), я дублирую $ _POST на сервере, который всегда пуст. Тем не менее, мои данные загружаются нормально, поэтому соединение api является хорошим.

Можете ли вы сказать мне, где я иду не так?

passwordServices.factory('Password', ['$resource', 
    function($resource){ 
     return $resource(api_base + 'passwords/index/', {}, { 
      query: {method:'GET', params:{}, isArray:true} 
     }); 
    } 
]); 

passwordControllers.controller('PasswordDetailCtrl', ['$scope', '$routeParams', '$http', 'State', 'Password', 
    function($scope, $routeParams, $http, State, Password) { 
     $scope.password = Password.get({passwordId: $routeParams.passwordId}, function(data) { 
      $scope.password.Password.title = "test"; 
      $scope.password.$save(); 
     }); 
    } 
]); 

А ниже мой CakePHP код API для контекста

public function index(){ 
     $this->autoRender = false; 
     $this->response->type('json'); 

     if ($this->request->is('post')){ 
      var_dump($_POST); 
     }else{ 
      if(isset($_GET['passwordId'])){ 
       $results = $this->Password->find('first', array(
        'conditions' => array(
         'Password.id' => $_GET['passwordId'] 
        ), 
        'contain' => array(
         'Provider', 
         'Type' 
        ) 
       )); 
      }else{ 
       $results = $this->Password->find('all', array(
        'contain' => array(
         'Provider', 
         'Type' 
        ) 
       )); 
      } 
      $this->response->body(json_encode($results)); 
     } 

    } 
+0

Это все правильно? $ scope.password.Password.title = "test"; Не должно быть $ scope.password.title = "test"; ? –

+0

Я использую cakephp для API, который возвращает {Password: {title: '', ..}} Я правильно понял, что POST должен публиковать данные? Или все данные должны пройти через URL? – user195257

ответ

0

Попробуйте

Service -

passwordServices.factory('Password', function($resource, $q) { 
    var resource = $resource(api_base + 'passwords/index/', {}, { 
    query: { 
     method: 'GET', 
     isArray: true, 
     cache: false 
    }, 
    save: { 
     method: 'POST', 
     isArray: false, 
     cache: false 
    } 
}); 
return { 
    getPasswords: function() { 
     var deferred = $q.defer(); 
     resource.query({}, 
      function(response) { 
       deferred.resolve(response); 
      }, 
      function(response) { 
       deferred.reject(response); 
      } 
     ); 
     return deferred.promise; 
    }, 
    savePassword: function(someObj) { 
     var deferred = $q.defer(); 

     resource.save({}, someObj, 
      function(response) { 
       deferred.resolve(response); 
      }, 
      function(response) { 
       deferred.reject(response); 
      } 
     ); 

     return deferred.promise; 
    } 
}; 
]); 

Controller -

passwordControllers.controller('PasswordDetailCtrl', ['$scope', '$routeParams', '$http', 'State', 'Password', 
    function($scope, $routeParams, $http, State, Password) { 

     $scope.handleGetPasswords = function (response) { 
      $scope.password = response; 
      $scope.password.Password.title = 'test'; 
      Password.savePassword($scope.password).then(function (response) { 
       console.log(response); 
      }) 
     }; 

     Password.getPasswords().then($scope.handleGetPasswords); 

    } 
]);