Handlebar.helper的视图无法使用来自控制器的操作

时间:2014-12-04 18:20:40

标签: javascript model-view-controller ember.js handlebars.js

如何从使用车把助手的视图中调用控制器内部的操作(不确定车把助手是否与获取控制器相关但我还是想提及它?)

VpcYeoman.EditRecordCategoryView = Ember.TextField.extend({
   //This is where i call the action from any controller
  click: function() { // might be a property or some other action
    this.get('controller').send('controllerActionName');  
  }
});

Ember.Handlebars.helper('edit-recordCategory', VpcYeoman.EditRecordCategoryView);

我会在该视图中做些什么来告诉控制器我希望它激活其中一个动作?

编辑1:

我将this.get('controller').send('controllerActionName');添加到click:function(){}, 我在该行代码中收到错误Uncaught TypeError: undefined is not a function

如果我将this.get('controller').send('controllerActionName');添加到didInsertElement:function(),我根本不会收到任何错误。

编辑2:

把手助手位于使用名为recordType的对象控制器的列表中。 ' RECORDTYPE'是我希望通过车把帮助的点击事件打电话的地方。然而

in record_types.hbs

{{#each itemController="recordType"}}
  {{#unless isEditing}}
     {{categoryName}}  
  {{/unless}}
  {{#if isEditing}}
    {{edit-recordCategory class="edit" value=category_name focus-out="acceptChanges" insert-newline="acceptChanges"}} //This is the handlebar helper
  {{/if}}
{{/each}}

我们可以假设记录中的isEditing属性为true,因为如果它是false,则手柄助手将不可见。

实际上,我项目控制器中的操作是为了切换该属性isEditing

1 个答案:

答案 0 :(得分:1)

要从视图中调用控制器操作,请执行以下操作:

VpcYeoman.EditRecordCategoryView = Ember.TextField.extend({
  //This is where i call the action from any controller
  click: function() { // might be a property or some other action
    this.get('controller').send('controllerActionName');  
  }
});