2013-01-21 5 views
1

Я получаю сообщение об ошибке «Объект [объект объекта] не имеет метода« применить »в консоли. Пожалуйста, смотрите скрипку .. http://jsfiddle.net/vineet85/AQx63/6/Backbone View не обновляется при изменении модели

var RefreshingView = new Backbone.View.extend({ 
    initialize: function() { 
     this.model.on('change', this.render, this); 
    }, 
    render: function() { 
     this.$el.html(this.model.get('text')); 
    } 
}); 

var m = new Backbone.Model({text: new Date().toString()}); 
var myView = new RefreshingView({model: m, el: 'body'}); 

myView.render(); 

setInterVal(function() { 
    m.set({text: new Date().toString()}); 
}, 1000); 

ответ

2

Ваш синтаксис откусил, первый для «объявить» свои взгляды и модели вы должны оставить вне новое ключевое слово, второй вы не должны пытаться " экземпляр» модель Backbone.js непосредственно, попробуйте выполнить следующие действия вместо

var RefreshingView = Backbone.View.extend({ 
     el: 'body', 

     initialize: function() { 
      this.model.on('change', this.render, this); 
     }, 
     render: function() { 
      this.$el.html(this.model.get('text')); 
     } 
    }); 

    var MyModel = Backbone.Model.extend({ 
     text: null 
    }); 

    var m = new MyModel({ text: new Date().toString() }); 
    var myView = new RefreshingView({ model: m, el: 'body' }); 

myView.render(); 

setInterval(function() { 
    m.set({ text: new Date().toString() }); 
}, 1000); 

Updated jsFiddle

+0

(1) Инстанцирование' Backbone.Model' witho Обязательно сначала продлить его, должно быть хорошо. (2) Нет функции 'setInterVal'. Причудливым «новым» при расширении «Backbone.View» является AFAIK, реальная проблема. –

+0

Я думал, что это не считается хорошей практикой, чтобы попробовать и использовать модели Backbone Models напрямую, но я думаю, если вам не нужны настройки по умолчанию и т. Д., Это не повредит. (Что касается setInterval, я не заметил этого опечатка, я остановился, как только увидел, что есть выход ...). Благодарю. – Jack

+0

Я не могу придумать какой-либо неподтвержденный случай, когда я использовал бы не расширенный «Backbone.Model», но я не думаю, что с ним что-то не так. Я уверен, что всегда был бы var var = Megel.extend ({}), но я не знаю, хорошая ли это привычка, дурная привычка или лучшая практика :) –

Смежные вопросы