0

コールバックからこれを返そうとしましたが、常に未定義になります。

これが切り取られたものです

create: function(currentView, data){
    var itsMe = this; 
    this.thumbsWrapper = this.templates.wrapper().hide();
    currentView.append(this.thumbsWrapper);
    this.thumbsWrapper.fadeIn("fast", function(){
        return itsMe;                                                 
    });
},

var l = list().create(currentView); //need teh return that i can use chaining

コールバックでfadeInを使用すると、var lは未定義になります...コールバックでfadeInを使用しない場合は、objを返します。

誰かがなぜアイデア?

4

2 に答える 2

2

@Felix Klingの言うことは正しいです。何も返していません。返品したい場合は、次のことitsMeを行う必要があります。

create: function(currentView, data){
    var itsMe = this; 
    this.thumbsWrapper = this.templates.wrapper().hide();
    currentView.append(this.thumbsWrapper);
    this.thumbsWrapper.fadeIn("fast");
    return itsMe;    
}

チェーンが必要な場合は、これで十分です。

フェードアウトが終了した時点への参照を取得するitsMe場合は、独自のコールバックを渡す必要があります。

create: function(currentView, data, callback){
    var itsMe = this; 
    this.thumbsWrapper = this.templates.wrapper().hide();
    currentView.append(this.thumbsWrapper);
    this.thumbsWrapper.fadeIn("fast", function(){ 
        callback(itsMe);
    });  
}


list().create(function (that) {
    console.log("fade out complete");
    console.log("itsMe is", that);
});

また、フェードアウトが終了したときにチェーン内の次の関数を実行するチェーンパターンが必要な場合は、参照ではthisなく、コマンドをキューに入れることができるオブジェクトを渡し、各コマンドを順番に実装する必要があります。

于 2013-01-10T13:19:58.753 に答える
1

関数でオブジェクトを返す必要がありますが、create()現在は何も返されていません:

create: function(currentView, data){
    var itsMe = this; 
    this.thumbsWrapper = this.templates.wrapper().hide();
    currentView.append(this.thumbsWrapper);
    this.thumbsWrapper.fadeIn("fast", function(){
        return itsMe;  //<--- this isn't going anywhere because you don't capture it                                               
    });
    return itsMe; //<------ return the object
},
于 2013-01-10T13:17:50.403 に答える