0
다음과 같은 모델의 백본 애플리케이션이 있습니다.backbone.js의 모델에서 이벤트 발생 및 수신하기
기본적으로 뮤직 브라우저 애플리케이션입니다. 응용 프로그램은 여러 개의 앨범을로드하며 각 앨범에는 이와 연관된 AlbumMetadata 객체가 있습니다.
또한 앨범에는 노래 모음이 있으며 각 노래에는 SongMetadata 개체가 연결되어 있습니다. 내가 자동으로 각 노래의 SongMetadata를 업데이트 할 수 있도록하려는
var MusicBrowser = MusicBrowser || {};
MusicBrowser.SongMetadata = Backbone.Model.extend({
initialize: function() {
this.fetch();
}
});
MusicBrowser.AlbumMetadata = Backbone.Model.extend({
initialize: function() {
this.fetch();
}
});
MusicBrowser.Song = Backbone.Model.extend({
initialize: function() {
var songMetadata = new MusicBrowser.SongMetadata({ albumId: this.collection.albumId, songId: this.get("Id") });
this.set("metadata", songMetadata);
}
});
MusicBrowser.Songs = Backbone.Collection.extend({
model: BundleBrowser.Song,
initialize: function (models, options) {
this.albumId = options.albumId;
this.fetch();
}
});
MusicBrowser.Album = Backbone.Model.extend({
initialize: function() {
var songs = new MusicBrowser.Songs([], { albumId: this.get('Id') });
this.set('songs', songs);
var albumMetadata = new MusicBrowser.AlbumMetadata({ albumId: this.get('Id') });
this.set("metadata", albumMetadata);
}
});
MusicBrowser.Albums = Backbone.Collection.extend({
model: MusicBrowser.Album,
initialize: function() {
this.fetch();
}
});
:
여기Albums (Collection)
|
|____ Album 1 (Model)
|
|____ AlbumMetadata (Model)
|
|
|____ Songs (Collection)
|
|____ Song 1 (Model)
| |
| |____ SongMetadata (Model)
|
|____ Song 2 (Model)
|
|____ SongMetadata (Model)
같이 내 코드 모습입니다 :
그러니까 기본적으로, 객체 계층 구조는 다음과 같이이다 Songs 컬렉션에서 상위 앨범 모델의 AlbumMetadata가 업데이트 될 때. 이벤트를 통해 어떻게합니까?
어떻게 AlbumMetadata 개체에서 이벤트를 발생시키고 Songset Collection의 SongMetadata 모델에서 해당 이벤트를 구독합니까?