0

angularjsのコントローラーにこのコードがあります

    $scope.likeit = function(entry) {
        entry.like = !entry.like;
        var ret = VoteResource.save(entry);
        console.log("Return Object")
        console.log(ret)
        console.log("======================================")
        console.log("Return Like Property")
        console.log(ret.like_count)
        return ret
    };

ビューでこの関数をトリガーしてコンソールで調べようとすると、これが出力になります

    Return Object 
       Resource {comment_count: 0, confess: "Hello world!!! kk", created_at: "2013-06-11T00:26:25Z", feeling_id: 0, hug_count: 0…} 
       comment_count: 0
       confess: "Hello world!!! kk"
       created_at: "2013-06-11T00:26:25Z"
       feeling_id: 0
       hug_count: 0
       id: 1
       like_count: 0
       metoo_count: 0
       updated_at: "2013-06-11T23:48:16Z"
       user_id: null
       __proto__: Resource

       ====================================== 
       Return Like Property 
         1 

私の質問は、なぜ ret.like_count が 1 を返すのかということです。最初のコンソール ログでは、like_count のリソース値はゼロ (0) ですが、ret.like_count の出力では 1 が返されます。なぜですか? では、リソース内の like_count にアクセスするにはどうすればよいでしょうか?

4

1 に答える 1

0

問題が見つかりました。リソースは非同期なので、$q (約束) インジェクションを使用します。これは問題を解決するための部分的なコードであり、angularjs のリンク $resource が正しく機能しません。

    save: function(confession) {
        var defferred = $q.defer()
        resource.save(confession,

            function(response) {
                console.log(response);
                confession.like_count =  response.like_count
                defferred.resolve(response);
            },
            function(response) { defferred.reject(response)}

        );

    }
于 2013-06-12T00:33:12.553 に答える