视图中的Ember操作在1.7.0版中停止工作

时间:2014-08-28 12:38:51

标签: ember.js handlebars.js

今天我尝试将我的应用程序更新为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及更早版本中完美运行。有什么我想念的。

感谢。

1 个答案:

答案 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
      }
   }
});