0

BackboneJS の 2 つの異なるビューを含む 2 つのモジュールを接続しようとすると、問題が発生します。

この RequireJS のモジュールには、バックボーンのビューが含まれています。このモジュール内で必要です。別のモジュールにあるバックボーンの別のビューを参照してください。よりシンプルにするためにコードを変更しました

define (["jquery","backbone","collections/controlSearchCollection","views/currentPlaylist","jqueryUI"], function($, Backbone, controlSearchMusic, currentPlaylist){

var searchModule = Backbone.View.extend({
    el: "#containerSearch",

    initialize: function () {
        this.collection = new controlSearchMusic();
    },
    events:{
        "dblclick li":"select"
    },
    select: function(element){
        var trackJSON ={};
        trackJSON["id"]= "playCloud_"+$(element.target).attr("id");
        currentPlaylist.collection.add(trackJSON);   <--- Here is where this error

    }
});

return searchModule;
});

これは、backboneJS のビューを含む RequireJS の別のモジュールです。最初のモジュールから JSON に追加する必要があります。

define (["jquery","backbone","collections/controlCurrentPlaylistCollection","jqueryUI"], function($, Backbone, controlCurrentPlaylist){

    var currentPlaylist = Backbone.View.extend({
        el: "#currentPlaylist",

        initialize: function(){
            this.collection = new controlCurrentPlaylist();
            this.collection.on("add", this.executeFunction, this);

        },
        executeFunction: function(song){
            alert(song.toSource());
        }
    });
    return currentPlaylist;
});

2 つのモジュールは app.js でインスタンス化されます

誰かが私を助けることができますか?ありがとうございます!

4

1 に答える 1

0

正確なエラーがなければわかりにくいですが、のインスタンスを作成していないようですcurrentPlaylist。そのため、未定義であり、関数currentPlaylist.collectionを呼び出そうとするとエラーが発生します。add

これを試すことができます:

var cpl = new currentPlaylist(); // create instance
cpl.collection.add(trackJSON);  // cpl.collection should be initialized here
于 2012-12-23T13:10:26.637 に答える