我想这很简单,但作为Ember新手,我找不到解决方案......
所以让我说我有这个非常简单的观点:
MyApp.MyTextView = Ember.View.extend({
template: Ember.Handlebars.compile('{{value}}')
});
我想使用此视图以显示同一对象的两个不同属性。这听起来像我想在调用'我的视图时添加参数。 在第二个视图中,我希望能够执行以下操作(假设我的内容对象是Person:{firstName:'toto',lasName:'titi'}):
MyApp.AnotherView = Ember.View.extend({
template: Ember.Handlebars.compile('FirstName: {{view MyApp.MyTextView value="content.firstName"}} - LastName: {{view MyApp.MyTextView value="content.lastName"}}')
});
我还试图按照here的说明使用Handlebars助手,但它不起作用(当我使用{{highlight firstName}}或{{highlight content.firstName}}时显示的是firstName或content。 firstName,而不是属性值...)
你们有什么想法吗?我被困在这里......
谢谢!
答案 0 :(得分:14)
要将参数传递给视图,您可以像这样指定每个参数:
{{view App.MyView firstNameBinding="content.firstName" lastNameBinding="content.lastName"}}
允许你这样做:
template: Ember.Handlebars.compile('{{view.firstName view.lastName}}');
但是,您可以想象,当您添加更多属性时,这将会非常。因此,您只需将content
对象作为context
传递(但您不需要将其作为上下文传递 - 尽管那是另一天):
{{view App.MyView contextBinding="content"}}
(请注意,contextBinding
是特殊的,并会更改视图中的上下文。)
这样,视图将保存您传入的对象,因此在您的视图中,您现在可以执行以下操作:
template: Ember.Handlebars.compile('{{firstName lastName}}');
(你可以这样做,因为content
现在是你视图的上下文。)
我已经敲了你一个快速的JSFiddle来解释(希望!):http://jsfiddle.net/YVCrq/