backbone.jsモデルフェッチメソッドの使用について非常に混乱しています。backbone.jsモデルフェッチメソッドの動作方法
profile: function(id) {
var model = new Account({id:id});
console.log("<---------profile router-------->");
this.changeView(new ProfileView({model:model}));
model.fetch();
}
最初のステップは、モデルアカウントがインスタンス化され、アカウントのモデルは次のようになります。次の例
バックボーンルータを参照してください。
define(['models/StatusCollection'], function(StatusCollection) {
var Account = Backbone.Model.extend({
urlRoot: '/accounts',
initialize: function() {
this.status = new StatusCollection();
this.status.url = '/accounts/' + this.id + '/status';
this.activity = new StatusCollection();
this.activity.url = '/accounts/' + this.id + '/activity';
}
});
return Account;
});
何のためのurlRootプロパティですか?モデルオブジェクトが作成された後、プロファイルビューはthis.changeView(新しいProfileView({model:model}))でレンダリングされます。の場合、changeview関数は次のようになります。
changeView: function(view) {
if (null != this.currentView) {
this.currentView.undelegateEvents();
}
this.currentView = view;
this.currentView.render();
},
ビューをレンダリングした後に、プロファイル情報は、まだ表示されませんが、model.fetch後();文が実行され、モデルからのデータが表示されます。なぜですか?私は実際にフェッチの仕組みがわからないので、私は見つけようとしますが、チャンスはありません。
まずはお返事ありがとうございます。とてもいい説明です。 fetch()が 'sync'イベントを発生させた後、ビューが自動的にレンダリングされます。あなたが私に与える提案は、いくつかの例を作ることができますか、私はかなりbackbonejsとjavascriptで私はよくその言語をよく知っているが、あまりよく知らない。 –
urlrootが正しく上書きされますか?このvarベースのCuz = _result(this、 'urlRoot')|| _.result(this.collection、 'url')|| urlError(); –
最初の質問では、同期イベントは自動的にビューをレンダリングしません。これを有効にするには、次のように追加します。 "view.on( 'sync'、this.render、this);" –