Templates EmberJS-带条件参数的模板
在我的模板中,我迭代模型中的数组。 为简单起见,我将使用以下示例:Templates EmberJS-带条件参数的模板,templates,ember.js,helpers,conditional,Templates,Ember.js,Helpers,Conditional,在我的模板中,我迭代模型中的数组。 为简单起见,我将使用以下示例: {{#each user in appModel.users}} 现在,如果用户在某个组中,我将尝试显示user的元素。 我有App.Group作为一个模型,它有一个检查用户是否在组中的方法。此方法接受一个参数user 所以 其中,group是App.group的一个特定实例,如果在组的ID列表中找到了用户的ID,则将返回true或false 我试图找到一种方法,将此方法用作条件模板。像这样: {{#if group.has_
{{#each user in appModel.users}}
现在,如果用户在某个组中,我将尝试显示user
的元素。
我有App.Group
作为一个模型,它有一个检查用户是否在组中的方法。此方法接受一个参数user
所以
其中,group
是App.group
的一个特定实例,如果在组的ID列表中找到了用户的ID,则将返回true或false
我试图找到一种方法,将此方法用作条件模板。像这样:
{{#if group.has_user user}}
<block>
{{/if}}
我将获取字符串“user.id”和“group.id”作为传递的参数。助手的编写方式如下:
Ember.Handlebars.registerHelper('ifUserInGroup', function(val1, val2, options){
//This is where I would get the models, but val1 and val2 are strings, not id's...
});
如果有人知道如何在条件中使用该方法,或者如何将实际值传递给助手,请帮助我
谢谢。请尝试下面的代码,并告诉我它是否有效
{{#each group in model}}
{{#if group.has_user}}
<block>
{{/if}}
{{else}]
<block>
{{/each}}
还可以使用valueBinding
属性将属性绑定到模型类,如下所示
{{view Ember.TextField valueBinding="yourProp"}}
按要求更新
下面是您的模板更改
{{#ifUserInGroup user group}}
yes
{{else}}
no
{{/ifUserInGroup}}
下面是您的把手助手
Handlebars.registerHelper('ifUserInGroup', function (user, group, options) {
if (typeof group[user] != 'undefined') {
return options.fn(this);
} else {
return options.inverse(this);
}
});
下面是给你的一把小提琴。
试试下面的代码,告诉我它是否有效
{{#each group in model}}
{{#if group.has_user}}
<block>
{{/if}}
{{else}]
<block>
{{/each}}
还可以使用valueBinding
属性将属性绑定到模型类,如下所示
{{view Ember.TextField valueBinding="yourProp"}}
按要求更新
下面是您的模板更改
{{#ifUserInGroup user group}}
yes
{{else}}
no
{{/ifUserInGroup}}
下面是您的把手助手
Handlebars.registerHelper('ifUserInGroup', function (user, group, options) {
if (typeof group[user] != 'undefined') {
return options.fn(this);
} else {
return options.inverse(this);
}
});
下面是给你的一把小提琴。
编辑:从ember的1.0版开始,此解决方案不再有效 在我最初发布的注册助手的基础上,在Vinothbabu的帮助下,我成功地做了一些工作 我缺少的是
Ember.handlebar.get(根、路径、选项)
使用该函数,我可以获得实际绑定的数据,而不是传递给助手的字符串
所以
{{{#用户中的每个用户}
{{{#ifUserInGroup user.id some_group.id}
{{/ifUserInGroup}
{{/每个}}
其中,
users
是应用程序模型的数组属性,some_group
是应用程序模型的app.group
实例属性,将为组中的每个用户显示一个块。编辑:从ember的1.0版开始,此解决方案不再有效
在我最初发布的注册助手的基础上,在Vinothbabu的帮助下,我成功地做了一些工作
我缺少的是Ember.handlebar.get(根、路径、选项)
使用该函数,我可以获得实际绑定的数据,而不是传递给助手的字符串
所以
{{{#用户中的每个用户}
{{{#ifUserInGroup user.id some_group.id}
{{/ifUserInGroup}
{{/每个}}
其中,
users
是应用程序模型的数组属性,some_group
是应用程序模型的app.group
实例属性,将为组中的每个用户显示一个块。问题在于,您正在显示当前用户所属的组。我需要的是特定组中的用户列表(可能不是当前用户)。也许我原来的帖子不清楚;我将添加更多细节。查看我的更新帖子@Michaelbattaglai设法让它运行起来。你的帖子帮助我到达了那里,但有一件事遗漏了。你看,在你的小提琴中,你传递了组的实际名称,因此你只需查找组名就可以在注册的助手中找到组。我希望通过传递两个绑定属性来查找用户是否在组中,就像我在最初的帖子中向ifUserInGroup传递user.id和group.id一样。将其传递到小提琴中会导致注册的助手将“user.id”和“group.id”用作字符串。关键是使用Ember.handlebar.get。我将在另一篇文章中展示我是如何做到这一点的。问题是,您正在显示当前用户所属的组。我需要的是特定组中的用户列表(可能不是当前用户)。也许我原来的帖子不清楚;我将添加更多细节。查看我的更新帖子@Michaelbattaglai设法让它运行起来。你的帖子帮助我到达了那里,但有一件事遗漏了。你看,在你的小提琴中,你传递了组的实际名称,因此你只需查找组名就可以在注册的助手中找到组。我希望通过传递两个绑定属性来查找用户是否在组中,就像我在最初的帖子中向ifUserInGroup传递user.id和group.id一样。将其传递到小提琴中会导致注册的助手将“user.id”和“group.id”用作字符串。关键是使用Ember.handlebar.get。我将在另一篇博文中展示我是如何做到的。ember中不支持阻止帮助程序。。。对的以前是这样,但遗憾的是,从1.0版开始,它就不支持了。ember中不支持块帮助程序。。。对的它曾经是,但遗憾的是,从1.0版开始,它就不是了。
Ember.Handlebars.registerHelper('ifUserInGroup', function(user, group, options){
user = Ember.Handlebars.get(this, user, options);
group = Ember.Handlebars.get(this, group, options);
if (group.has_user(user)) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
{{#each user in users}}
{{#ifUserInGroup user.id some_group.id}}
<block displaying user data>
{{/ifUserInGroup}}
{{/each}}