У меня есть ресурс с настраиваемым методом обновления:
angular.module('user.resources', ['ngResource']).
factory('User', function($resource) {
var User = $resource('/user/:id', {}, {
update: {
method: 'PUT'
}
});
User.prototype.update = function(cb) {
console.log('foo');
return User.update({
id: this._id
}, angular.extend({}, this, {
_id: undefined
}), cb);
};
Я передаю этот ресурс специальной директиве через область видимости:
directive('avatarUpload', function($http) {
return {
restrict: 'E',
scope: {
model: '='
}, ...
и я вызываю метод обновления в контроллере директив при щелчке btn:
$scope.model.update(function() {
console.log('bar');
});
Поведение, которое меня озадачивает, заключается в том, что при первом нажатии на кнопку выводится «foo», но не «bar», при втором нажатии на кнопку выводится «bar», а затем «foo». Если больше щелкнуть, всегда печатайте «bar», затем «foo».
Запрос PUT запускается только при втором щелчке и последующих, а не при первом.
Примечание. Я отлично использовал этот метод обновления ресурсов в контроллерах, пока не попытался вызвать его из директивы. Я использую angular 1.1.4. Я передаю этот ресурс, потому что хочу, чтобы директива работала с другим типом ресурса.