2013-04-24 20 views
0

我想要做一個基於id的燼js查找。最好的方式來實現在燼js中查找,而不是丟失當前的控制器範圍

如果具有該ID的對象存在,我想對該對象執行一些邏輯。

所以,我這樣做基於以下代碼:

Cluey.UsersController = Ember.ArrayController.extend({ 
    keypadNum: "", 
    loginWithPin: function() { 
    var res; 
    console.log("Login with pin: " + this.get('loginPin')); 
    res = Cluey.User.find({ 
     pin: this.get('loginPin') 
    }); 
    return res.on('didLoad', function() { 
     var user; 
     if (res.get('firstObject') != null) { 
     user = res.objectAt(0); 
     return this.doLogin(user); 
     } else { 
     return alert("User not found with pin " + this.get('loginPin')); 
     } 
    }); 
    }, 
    doLogin: function(user) { 
    //some code 
    } 
}); 

的問題是,一旦我在res.on(「didLoad」)的回調,我失去了控制的範圍,因此,當我嘗試訪問this.get(「loginPin」)時,它以未定義的方式返回。

有誰知道如何解決這個問題。

謝謝!

+0

嗯,提取回調代碼到控制器中的函數並調用'res.on('didLoad',this,'function_name');'help? (我不太確定你是否可以訪問'res',或者如果你現在有權訪問它。) – 2013-04-24 13:39:25

+0

如果我調用方法,我不認爲我可以訪問res在控制器中。我現在可以訪問它,我只是沒有訪問控制器中的任何東西,例如:this.get('loginPin') – l33z3r 2013-04-24 13:47:43

回答

1

如果您在on事件中傳遞一個對象作爲第二個參數,它將成爲回調中的上下文。

您可以通過this作爲didLoad事件的第二個參數:

res.on('didLoad', this, function() { 
    var user; 
    if (res.get('firstObject') != null) { 
    user = res.objectAt(0); 
    return this.doLogin(user); 
    } else { 
    return alert("User not found with pin " + this.get('loginPin')); 
    } 
}); 
+0

工作了一個魅力!謝謝泰迪 – l33z3r 2013-04-24 14:58:15

0

您可以創建一個名爲變種和self分配this它。

Cluey.UsersController = Ember.ArrayController.extend({ 
    keypadNum: "", 
    var self = this; 
    loginWithPin: function() { 
    var res; 
    console.log("Login with pin: " + this.get('loginPin')); 
    res = Cluey.User.find({ 
     pin: self.get('loginPin') 
    }); 
    return res.on('didLoad', function() { 
     var user; 
     if (res.get('firstObject') != null) { 
     user = res.objectAt(0); 
     return this.doLogin(user); 
     } else { 
     return alert("User not found with pin " + this.get('loginPin')); 
     } 
    }); 
    }, 
    doLogin: function(user) { 
    //some code 
    } 
}); 
+0

那裏「自我」在那裏使用?如果對象要將「this」的當前值傳播到閉包中,是不是應該用閉包中的「self」替換「this」? – 2016-11-03 21:22:31

相關問題