これが取り引きです:私は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 番目 (そして最後): 新しいオブジェクトを作成する前にデータ ストアをクリアするにはどうすればよいですか? 私の結果は重複するか、そうでなければ既存のデータストアに同じものを追加し続けます。
ご協力ありがとうございました!