0

これが取り引きです:私はphpスクリプトからデータを取得しようとしています.javascriptオブジェクトを作成し、それらをemberデータストアに割り当ててから、ember find()関数を呼び出してデータを表示します.

データストア:

    App.Images = DS.Model.extend({
        name: DS.attr('string'),
        imageThumb: DS.attr('string'),
        imageFull: DS.attr('string'),
    });

    //Have to do this, otherwise it doesn't work
    App.Images.FIXTURES = [];

ここにデータをロードするメイン関数があります...まず第一に、これが正しい方法であるかどうかさえわかりません。しかし、それはうまくいきますが...そのようになっているとしたら、私は深刻な疑問を抱いています. $.each 関数を呼び出す前に、コメントに注意してください。

    App.MainRoute = Ember.Route.extend({    
        model: function(){

            $.ajax({
                type: "POST",
                url: "dataDao.php?f=getAll",
                datatype: "json",
                success: function(data){ 

                    //I WANT TO CALL THE 'CLEAR DATA STORE' HERE!

                    $.each(JSON.parse(data), function(index, value) {
                        App.Images.createRecord( 
                        {
                                id: value['id'],
                                name: value['name'],
                                imageThumb: value['imageThumb'],
                                imageFull: value['imageFull'],
                        }); 
                    });
                },
                error: function(err){
                  alert('error!' + JSON.stringify(err));
                }
            });
            return App.Images.find();
        }
    });

したがって、まず、これが ember の使用方法であると想定されているかどうかさえわかりません。

第二に、ajax は非同期であると想定されていませんか? return App.Images.find() を呼び出す前に、成功関数が終了するのを待つのはなぜですか? 成功関数が終了する前に return を呼び出して、表示を空にするべきではありませんか?

3 番目 (そして最後): 新しいオブジェクトを作成する前にデータ ストアをクリアするにはどうすればよいですか? 私の結果は重複するか、そうでなければ既存のデータストアに同じものを追加し続けます。

ご協力ありがとうございました!

4

0 に答える 0