Ember.js 使用bindAttr创建动态字符串
我想在一个对象上创建一个动态类名,并使用从模型中得到的值。其中一个键名为Ember.js 使用bindAttr创建动态字符串,ember.js,handlebars.js,Ember.js,Handlebars.js,我想在一个对象上创建一个动态类名,并使用从模型中得到的值。其中一个键名为provider,其中包含“twitter”或“facebook”。我想做的是在提供者前面加上字符串“icon-”,这样得到的类就是icon-twitter或icon-facebook 这是我现在掌握的密码 Ember提供了一种在属性中包含静态字符串的方法,方法是在属性前面加上:。您可以看到,在本例中,我还添加了一个名为avatar icon的类。我已经尝试了:icon account.provider,它只产生了文本字
provider
,其中包含“twitter”或“facebook”。我想做的是在提供者前面加上字符串“icon-”,这样得到的类就是icon-twitter
或icon-facebook
这是我现在掌握的密码
Ember提供了一种在属性中包含静态字符串的方法,方法是在属性前面加上:
。您可以看到,在本例中,我还添加了一个名为avatar icon
的类。我已经尝试了:icon account.provider
,它只产生了文本字符串“icon account.provider”
响应
不错。我现在正在研究一个类似于你答案的解决方案。问题:此视图将在each循环的上下文中使用。如何传入要在视图中使用的当前项?我现在有这个:
{{#控制器中的每个帐户}
{{{查看“Social.AccountButtonView”}
{{/view}
{{/每个}}
是否可以这样做:
{{{#查看“Social.AccountButtonView”account=“account”}
?我之前说过,
属性索引
将是一个合适的解决方案,但我错了。如前所述,在绑定给定视图的class
属性时,应使用类名
或类名绑定
。请参考以下样本:
App.ApplicationView = Em.View.extend({
provider: 'Facebook',
classNameBindings: 'providerClass',
providerClass: function() {
return 'icon-avatar icon-%@'.fmt(this.get('provider').toLowerCase());
}.property('provider')
});
这将呈现以下HTML:
<div id="ember212" class="ember-view icon-avatar icon-facebook">
<h1>App</h1>
</div>
应用程序
这是一把小提琴:
(注意:fiddle链接到的是比RC更早的一个版本的Ember.js)您不应该使用attributeBindings
,您应该只使用classNameBindings
。我担心他们会经常发生冲突。@ebryn你能再解释一下吗?诚实的问题:你说它们通常会冲突是什么意思?如果你想更新class
属性,你应该使用classNames
或classNameBindings
属性,这些属性在Ember.View
中公开。我相信当这些特性已经存在时,使用attributeBindings:['class']
是一个坏主意。好的,我想我明白你的意思了,开发人员可以使用attributeBindings
在类
属性中包含“余烬视图”。为了让我更好地理解,什么时候可以使用attributeBindings
。。。{{/view}}
。我相信在这种情况下,account
将超出子视图的范围,因此在视图中,您可以将其称为view.account