首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Ember-cli扩展{link-}}

用Ember-cli扩展{link-}}
EN

Stack Overflow用户
提问于 2015-07-22 16:16:25
回答 3查看 1.2K关注 0票数 1

这个问题类似于未回答的Extending link-to

我正在尝试扩展{{link-to}}助手以输出其他属性绑定。然而,属性不会出现在我们的HTML中。以下是我们所拥有的:

代码语言:javascript
复制
//views/link-to.js (normally coffeescript)
import Ember from 'ember'

var LinkToView = Ember.LinkView.reopen({
  attributeBindings: ['data-toggle', 'data-placement', 'title']
});

export default LinkToView;

呈现的输出如下:

代码语言:javascript
复制
define('app/views/link-to', ['exports', 'ember'], function (exports, Ember) {

  'use strict';

  var LinkToView;

  LinkToView = Ember['default'].LinkView.reopen({
    attributeBindings: ['data-toggle', 'data-placement', 'title']
  });

  exports['default'] = LinkToView;

});

当其调用和呈现的输出:

代码语言:javascript
复制
// Any .hbs file
{{#link-to 'account' 
    class='header-link' 
    data-toggle='tooltip' 
    data-placement='right' 
    title='Account'
}}
    <span class="glyphicon glyphicon-cog" aria-hidden="true"></span>
{/link-to}}

// Rendered...
<a id="ember615" class="ember-view header-link" href="/account"     title="Account">             
    <span class="glyphicon glyphicon-cog" aria-hidden="true"></span>
</a>

我们哪里出问题了?我知道这和解决方案有关或者我们怎么称呼它。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-06 14:21:06

因此,这可能不是最正确的答案,但我偶然发现,如果您在route/applaction.jsbeforemodel钩子中添加任何类型的扩展或重写,它就工作得非常完美:

代码语言:javascript
复制
// routes/application.js
export default Ember.Route.extend({
  beforeModel: function() {
    Ember.LinkView.reopen({
      attributeBindings: ['data-toggle', 'data-placement', 'title']
    });
  })
});
票数 1
EN

Stack Overflow用户

发布于 2016-02-04 22:41:22

对于Ember 2.0+

  1. 创建目录app/重新打开
  2. 创建文件应用程序/重新打开/链接-Component.js 从' Ember ';Ember.LinkComponent.reopen导入ember({ attributeBindings:‘数据-变化’,‘数据-偏移’,‘数据-内容’,‘数据-任何’};
  3. 在app.js中导入它 import LinkComponent from './reopens/link-component';

就这样。对于ember< 2.0,将LinkComponent替换为LinkView

票数 8
EN

Stack Overflow用户

发布于 2017-01-30 19:07:02

文件:app/reopens/link-component.js

如果这可以帮助其他人获得通用数据-*用于Ember 2.x。

代码语言:javascript
复制
import Ember from 'ember';

Ember.LinkComponent.reopen({
    init: function() {
        this._super();
        var self = this;

        // bind attributes beginning with 'data-'
        Object.keys(this).forEach(function(key) {
            if (key.substr(0, 5) === 'data-') {
                self.get('attributeBindings').pushObject(key);
            }
        });
    },
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31568638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档