今天我尝试将我的应用程序更新为ember 1.7.0,但我注意到视图中的动作处理程序停止被调用。
我的观点定义如下:
// Ember view for the project partial
App.ProjectThumbnailView = Ember.View.extend({
templateName: 'partials/_project',
didInsertElement: function() {...},
/**
* Handles the event when the 'feature project' button is pressed
* @param {Project} project The project to be featured
*/
featureProject: function() {
var project = this.get('context');
project.toggleProperty('featured');
project.toggleProperty('abilities.feature');
project.toggleProperty('abilities.unfeature');
project.feature()
.then(
function() {},
function(error) {
project.toggleProperty('featured');
project.toggleProperty('abilities.feature');
project.toggleProperty('abilities.unfeature');
App.set('error', {
message: I18n.t('error_message_generic_server')
});
}
);
}
});
模板partials / _project.hbs包含以下按钮来调用操作:
<button class="btn btn-mini btn-primary right-top" {{action 'featureProject' target='view'}}><i class="icon-star"></i> {{unbound i18n 'feature'}}</button>
我也试过将featureProject操作放在一个动作哈希中无济于事。
这曾经在ember 1.6.0及更早版本中完美运行。有什么我想念的。
感谢。
答案 0 :(得分:1)
您应该在actions
哈希内部执行操作。 Ember 1.7.0删除了对控制器根对象中的操作查找的支持。这已经被弃用了一段时间。
// Ember view for the project partial
App.ProjectThumbnailView = Ember.View.extend({
actions: {
/**
* Handles the event when the 'feature project' button is pressed
* @param {Project} project The project to be featured
*/
featureProject: function() {
var project = this.get('context');
// blah blah
}
}
});