ree*_*eef 8 javascript handlebars.js ember.js
我想这很简单,但作为一个Ember新手,我找不到解决方案......
所以让我说我有这个非常简单的观点:
MyApp.MyTextView = Ember.View.extend({
template: Ember.Handlebars.compile('{{value}}')
});
Run Code Online (Sandbox Code Playgroud)
我想使用此视图以显示同一对象的两个不同属性.这听起来像我想在我'调用'我的视图时添加参数.在第二个视图中,我希望能够执行以下操作(假设我的内容对象是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"}}')
});
Run Code Online (Sandbox Code Playgroud)
我也尝试作为讲解了利用手把的助手在这里,但它不工作(当我使用{{亮点的firstName}}或{{亮点content.firstName}}显示什么是的firstName或content.firstName,而不是属性值. ..)
你们有什么想法吗?我被困在这里......
谢谢!
Wil*_*ney 14
要将参数传递给视图,您可以像这样指定每个参数:
{{view App.MyView firstNameBinding="content.firstName" lastNameBinding="content.lastName"}}
Run Code Online (Sandbox Code Playgroud)
这将允许你做:
template: Ember.Handlebars.compile('{{view.firstName view.lastName}}');
Run Code Online (Sandbox Code Playgroud)
但是,您可以想象,当您添加更多属性时,这将变得非常长.因此,您可以简单地传入您的content对象context(但您不需要将其作为上下文传递 - 尽管那是另一天):
{{view App.MyView contextBinding="content"}}
Run Code Online (Sandbox Code Playgroud)
(请注意,这contextBinding是特殊的,并在视图中更改上下文.)
这样,视图将保存您传入的对象,因此在您的视图中,您现在可以执行以下操作:
template: Ember.Handlebars.compile('{{firstName lastName}}');
Run Code Online (Sandbox Code Playgroud)
(你可以这样做,因为content现在是你视图的上下文.)
我已经敲了你一个快速的JSFiddle来解释(希望!):http://jsfiddle.net/YVCrq/
| 归档时间: |
|
| 查看次数: |
5910 次 |
| 最近记录: |