Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates EmberJS-带条件参数的模板_Templates_Ember.js_Helpers_Conditional - Fatal编程技术网

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}}