这个问题类似于未回答的Extending link-to。
我正在尝试扩展{{link-to}}助手以输出其他属性绑定。然而,属性不会出现在我们的HTML中。以下是我们所拥有的:
//views/link-to.js (normally coffeescript)
import Ember from 'ember'
var LinkToView = Ember.LinkView.reopen({
attributeBindings: ['data-toggle', 'data-placement', 'title']
});
export default LinkToView;呈现的输出如下:
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;
});当其调用和呈现的输出:
// 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>我们哪里出问题了?我知道这和解决方案有关或者我们怎么称呼它。
谢谢。
发布于 2015-08-06 14:21:06
因此,这可能不是最正确的答案,但我偶然发现,如果您在route/applaction.js的beforemodel钩子中添加任何类型的扩展或重写,它就工作得非常完美:
// routes/application.js
export default Ember.Route.extend({
beforeModel: function() {
Ember.LinkView.reopen({
attributeBindings: ['data-toggle', 'data-placement', 'title']
});
})
});发布于 2016-02-04 22:41:22
对于Ember 2.0+
import LinkComponent from './reopens/link-component';就这样。对于ember< 2.0,将LinkComponent替换为LinkView
发布于 2017-01-30 19:07:02
文件:app/reopens/link-component.js
如果这可以帮助其他人获得通用数据-*用于Ember 2.x。
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);
}
});
},
});https://stackoverflow.com/questions/31568638
复制相似问题