Ember.js:如何向View添加参数

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/