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

Posted

技术标签:

【中文标题】Emberjs - 使用专注于自身的 Views/Handlebar Helpers 创建一个按钮【英文标题】:Emberjs - Creating a button using Views/Handlebar Helpers that focuses on itself 【发布时间】:2014-04-17 14:22:08 【问题描述】:

我有一个 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】:

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

【讨论】:

加一!这个很棒,它适用于ootb!我接受。

以上是关于Emberjs - 使用专注于自身的 Views/Handlebar Helpers 创建一个按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何在 EmberJS 应用程序中启用 CORS?

Emberjs 高级排序 hasMany 关联作为计算属性

emberjs 和 Foundation4

Emberjs - 一起使用 CollectionView 和 ItemController

emberjs 基金会 5 手风琴

emberjs - 如何使用路由器基础设施标记活动菜单项