Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用angularjs、Django、Django rest框架更新模型_Javascript_Python_Json_Django_Angularjs - Fatal编程技术网

Javascript 如何使用angularjs、Django、Django rest框架更新模型

Javascript 如何使用angularjs、Django、Django rest框架更新模型,javascript,python,json,django,angularjs,Javascript,Python,Json,Django,Angularjs,我有一个帖子id的json表示: http://127.0.0.1:8000/update/1?format=json {"title": "about me", "content": "I like program", "created": "2014-11-29T18:07:18.173Z", "rating": 1, "id": 1} class UpdateModel(generics.RetrieveUpdateDestroyAPIView): lookup_f

我有一个帖子id的json表示:

http://127.0.0.1:8000/update/1?format=json
{"title": "about me", "content": "I like program", "created":    "2014-11-29T18:07:18.173Z",   "rating": 1, "id": 1}
class UpdateModel(generics.RetrieveUpdateDestroyAPIView):
      lookup_field = 'id'
      queryset = BlogPost.objects.all()
      serializer_class = BlogPostSerializer
      permission_classes = (AllowAny,)
我尝试通过单击按钮更新评级:

 <button ng-click="click(post.id)">Click me</button>

快速整理
脚本
标记表明,如果http调用成功,则仅定义函数
单击

我建议将click方法的定义移到success回调之外

您也可能会遇到竞速情况,即在单击实际按钮之前,尚未定义单击功能。不管怎样,您都希望将该函数定义移动到实际创建控制器的位置

建议的编辑(已移动
单击http调用响应之外的定义):

更新:

  • 将$resource注入控制器
  • 已从单击函数参数中删除$resource

我从成功回调中删除了click函数,但什么都没有。我更新了答案,以向您展示我所说的内容,而不仅仅是显示您的格式化代码。我已再次更新,请参阅答案中的更新部分。也就是说,我对NGRealo不太熟悉,我会考虑将其中的一些逻辑重构成服务或工厂。我尝试过,但它没有帮助,如果您在哪里复制浏览器控制台的输出,这将是有帮助的。那里可能有一些角度错误信息。
class UpdateModel(generics.RetrieveUpdateDestroyAPIView):
      lookup_field = 'id'
      queryset = BlogPost.objects.all()
      serializer_class = BlogPostSerializer
      permission_classes = (AllowAny,)
var demoApp = angular.module('demoApp', ['ngResource']);
demoApp.controller('AllPosts', function($scope, $http, $resource) {
    $scope.click = function(post_id) {
        var Post = $resource('/update/:PostId ', {
            PostId: post_id,
            salutation: 'json'
        });
        post = Post.get({
            PostId: post_id
        }, function() {
            post.rating = post.rating + 1;
            post.$save();
        });
    };

    $http.get('/blogpost/?format=json').success(function(data, status, headers, config) {
        $scope.posts = data.results;
        $scope.predicate = '-title';
    }).error(function(data, status, headers, config) {});
})