nul*_*ull 9 javascript ember.js
我正在更新以下路线:
App.SomeRoute = Ember.Route.extend({
events: {
getMore: function(){
var controller = this.get('controller'),
nextPage = controller.get('page') + 1,
perPage = controller.get('perPage'),
items;
items = this.events.fetchPage(nextPage, perPage);
controller.gotMore(items, nextPage);
},
fetchPage: function(page, perPage){
. . . .
}
}
});
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,它工作正常.但是,events语法已被弃用.相反,我们假设使用actions.更新工作得很好,直到我到达该行:
items = this.events.fetchPage(nextPage, perPage);
Run Code Online (Sandbox Code Playgroud)
这会引发错误:
TypeError: this.events is null
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果我将代码更新为:
items = this.actions.fetchPage(nextPage, perPage);
=> TypeError: this.actions is null
Run Code Online (Sandbox Code Playgroud)
如何从同一路径中访问操作方法?
phk*_*tha 14
您必须使用.send()来调用actions散列中的函数.例:
App.SomeRoute = Ember.Route.extend({
actions: {
getMore: function(){
var controller = this.get('controller'),
nextPage = controller.get('page') + 1,
perPage = controller.get('perPage'),
items;
items = this.send('fetchPage', nextPage, perPage);
controller.gotMore(items, nextPage);
},
fetchPage: function(page, perPage){
.. . .
}
}
});
Run Code Online (Sandbox Code Playgroud)
值得注意的是,你可能会fetchPage离开actions哈希.如果它仅用于'内部'并且不直接响应UI事件,那么它不需要在actions哈希中.然后你可以用它来调用它:
items = this.fetchPage(nextPage, perPage);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8308 次 |
| 最近记录: |