我有一个Ember应用程序,我是一个初学者。有一个表单,最终用户可以在其中按特定日期搜索该特定项目。控制器看起来像(并在问题中评论):
App.IpbinshowController = Ember.ObjectController.extend({
actions:{
searchPeriod: function(params){
var inventory_item_id_val=this.get('id');
var start_date_val=this.get('start_date');
var end_date_val=this.get('end_date');
alert('this is what I want with start_date: ' + start_date_val + ' and end_date: ' + end_date_val + ' and inventory_item_id: ' + inventory_item_id_val);
var result = App.InventoryItem.find(inventory_item_id_val, {start_date: start_date_val, end_date: end_date_val }); // <- this works correctly
result.then(function(){ // This part doesn't work
this.set('model',result); // <- I get 'Uncaught TypeError: undefined is not a function' for this line
}); //
}
}
});
我该怎么办?并使其重新呈现模板。
编辑#1
我有种感觉,它会更接近这个:
var result = App.InventoryItem.find(inventory_item_id_val, {start_date: start_date_val, end_date: end_date_val });
result.then(function(){
console.log('here are result: ');
console.log(result);
result.done(function(r){
console.log('here are r: ');
console.log(r);
this.set('model', r);
}.bind(this));
});
因为console.log(r)正在输出正确的信息,而我在下一行得到了一个undefined-那么我在那一点上如何引用它呢?我是第一次处理这种事。
2条答案
按热度按时间vvppvyoh1#
收到此错误的原因是
this
在不同的上下文中使用,并且没有引用相同的对象,正如Hrishi
所指出的那样。一个简单而常见的方法,我通常遵循的是将此赋值给一个变量,然后使用该变量。http://emberjs.jsbin.com/pokohuku/1/edit
js
csbfibhn2#
你的
this
是错误的。内部函数中的this
与定义它的函数中的this
不同。要解决此问题,您可以使用用途: