Emberjs - 使用专注于自身的Views / Handlebar Helpers创建一个按钮

时间:2014-04-17 14:22:09

标签: javascript jquery view ember.js handlebars.js

我有一个Handlebars帮助器视图,它使用Em.Button(我知道它已被弃用)制作一个Deactivate Button,当按钮出现时,它会自动聚焦。点击该按钮会触发“删除”按钮。动作和焦点使用动作来取消删除'

问题是,车把助手没有关闭{{/}}把手,阻止我在按钮内放置文字,按钮最终只是一个空壳。 如何为此按钮指定文字值?如果没有Em.Button,是否有更简单的方法制作此按钮?

绿色检查将转到使此按钮有效的答案。

车把助手看起来像这样

{{delete-recordCategory class="" value=recordCategory focus-out="cancelDeactivate" insert-newline="cancelDeactivate"}}

在视图中,我添加了焦点,然后点击“停用”按钮。采取行动

VpcYeoman.DeleteRecordCategoryView = Em.Button.extend(Ember.ViewTargetActionSupport, {
  click: function() {
    this.triggerAction({
      action: 'deactivateCategoryNow'
    }); // Sends the `save` action, along with the current context
        // to the current controller
  },
  didInsertElement: function() {
    this.$().focus();
  }
});

Ember.Handlebars.helper('delete-recordCategory', VpcYeoman.DeleteRecordCategoryView);

ember站点建议将Ember.ViewTargetActionSupport作为向此视图添加操作的方法。

Ember v.1.0

1 个答案:

答案 0 :(得分:1)

Ember.Button不仅被弃用,而且已从新版本中完全删除。绝对不是你想要留下的东西。尝试自己写。这是一个可能做你想做的组件的快速示例:

App.FocusButtonComponent = Ember.Component.extend({
    didInsertElement: function() {
        Em.run.later(function() {
            this.$('button').focus();
        }.bind(this), 1);
    },

    actions: {
        click: function() {
            this.sendAction('click');
        }
    }
});

focus_button.hbs

<button {{action 'click' on='click' bubbles=false}}>
    {{yield}}
</button>

然后,您可以像这样使用它:

{{focus-button click='deactivateCategoryNow'}}
    Text Goes Here. Could be anything. <strong>Anything.</strong>
{{/focus-button}}