マイtodos.js:コレクションの長さが0だがフェッチが成功した理由は?
var app = app || {};
(function() {
'use strict';
var Todos = Backbone.Collection.extend({
model: app.Todo,
url: '/api/todos'
});
app.todos = new Todos();
})();
アプリ-view.js
var app = app || {};
(function($){
'use strict';
app.AppView = Backbone.View.extend({
el: '.todoapp',
events : {
'keypress .new-todo': 'createOnEnter'
},
initialize: function() {
this.$input = this.$('.new-todo');
this.$list = $('.todo-list');
app.todos.fetch({
reset : true
});
this.render();
},
render: function(){
console.log(' len = ' + app.todos.length);
app.todos.each(function(todo){
this.renderTodo(todo);
}, this);
},
...
フェッチされたデータ
[{
"_id": "5801",
"title": "testtitle123",
"completed": false,
"__v": 0
}, {
"_id": "58182",
"title": "testtitle126",
"completed": false,
"__v": 0
}, {
"_id": "5813",
"title": "testtitle127",
"completed": false,
"__v": 0
}]
それは(http://myip:8000/api/todosから)データをフェッチすることに成功しました。しかしコンソールから、長さは、私は以下のコードを試してみました常に0
UPDATE
です。コンソールに「OK」または「エラー」は記録されません。
var app = app || {};
(function($){
'use strict';
app.AppView = Backbone.View.extend({
el: '.todoapp',
events : {
'keypress .new-todo': 'createOnEnter'
},
initialize: function() {
this.$input = this.$('.new-todo');
this.$list = $('.todo-list');
this.listenTo(app.todos, 'sync', this.render);
app.todos.fetch({
reset : true,
context: this,
success: function(col, res, op) {
console.log('OK');
},
error: function(col, res, op){
console.log('error');
}
});
},
render: function(){
console.log(' len = ' + app.todos.length);
app.todos.each(function(todo){
this.renderTodo(todo);
}, this);
},
renderTodo: function(todo) {
console.log('render :' + todo.title);
var todoView = new app.TodoView({ model : todo });
this.$list.append(todoView.render().el);
},
});
})(jQuery);
受信したデータは何ですか? –
答えに無関係で混乱しやすいので、あなたの質問への回答からコードを編集しないでください。 –
その時点でもう一方のコードが機能するはずですので、調査する必要があります。 'render'はどこか他のところから呼び出されているのでしょうか? –