2013-05-28 2 views
1

Я создал одну базовую модель под названием «художник» и один скелет, называемый «художник». Я успешно достал модель, как я мог видеть ее на моей вкладке сети Chrome devtools.Модель fetch() не срабатывает ни в какое событие

Однако, выборка не активировала событие 'change' в этот момент. Странно то, что оно хорошо сработало событие «изменения», когда оно создало модель, но не тогда, когда она ее выбрала ...

Я мог бы использовать обратный вызов успеха в методе fetch() не самый правильный способ сделать это. Есть идеи ?

Модели & Просмотра инициализация:

var artist = new Artist({id: 3}); 
var artistView = new ArtistView({model: artist}); 

Я тогда забрать мою модель:

artist.fetch(); 

В моем магистральном Посмотреть класс, я слушаю 'изменить' событие исходя из модель:

var ArtistView = Backbone.View.extend({ 

    initialize: function() { 
     this.model.on("change", this.test()); 
    }, 

    test: function() { 
     console.log(this.model.get("name")); 
    } 
}); 

Редактировать: событие "sync" также не работает. Когда я создаю модель, она хорошо запускает событие «sync», но не тогда, когда модель была успешно извлечена.

+2

Прислушайтесь к синхронизации событий. – Stephen

+0

Правильная синхронизация будет более подходящей. –

ответ

0

Проблема возникла у слушателя событий. Фактически это не учитывало контекст.

Вот решение:

this.model.on("sync", this.test, this); 

И не

this.model.on("sync", this.test()); 
3

Вам необходимо использовать событие «sync».

var ArtistView = Backbone.View.extend({ 

    initialize: function() { 
     this.model.on("sync", this.test()); 

    }, 

    test: function() { 
     console.log(this.model.get("name")); 
    } 
}); 

Изменить только огни при изменении атрибута.

Docs.

Отредактировано thx to stephen.

+0

Просто протестирован и, к сожалению, не работает. Метод тестирования вызывается при создании модели, но не при ее успешном извлечении. Crazy ... – JeremyW

+0

Это должно произойти из моего прослушивателя событий, поскольку я только что инициировал «синхронизацию» вручную, и ничего не получилось. – JeremyW

+0

Вот решение: this.model.on ("sync", this.test, this); :) – JeremyW

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