Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/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
Ember.js 基于条件逻辑将视图插入模板的Handlebar辅助对象_Ember.js_Handlebars.js - Fatal编程技术网

Ember.js 基于条件逻辑将视图插入模板的Handlebar辅助对象

Ember.js 基于条件逻辑将视图插入模板的Handlebar辅助对象,ember.js,handlebars.js,Ember.js,Handlebars.js,我有一个在实体数组上迭代的模板 我想根据一些逻辑为这些实体中的一些显示一个“删除”按钮,我只是想了解最好的方法 实际的“删除”按钮将使用以下标记呈现,请注意,该标记包括对内置操作帮助器的调用: 我正在尝试创建一个无逻辑的模板,所以我想也许我可以创建一个助手,如: Ember.Handlebars.registerHelper('optionalRemoveEntityButton', function(entity, options) { logicForDeterminingWhether

我有一个在实体数组上迭代的模板

我想根据一些逻辑为这些实体中的一些显示一个“删除”按钮,我只是想了解最好的方法

实际的“删除”按钮将使用以下标记呈现,请注意,该标记包括对内置操作帮助器的调用:

我正在尝试创建一个无逻辑的模板,所以我想也许我可以创建一个助手,如:

Ember.Handlebars.registerHelper('optionalRemoveEntityButton', function(entity, options) {
  logicForDeterminingWhetherToShowView 
  removeEntityButtonView = howDoILoadAViewProgrammatically?
  return removeEntityButtonView;
});
我不明白如何以编程方式加载视图。我想使用视图,因为这个助手不仅仅返回一些简单的标记。它还包括对{{action}}helper的调用

除非有更好的方法来实现我的目标

我有一个在实体数组上迭代的模板。我想根据一些逻辑为这些实体中的一些显示一个“删除”按钮,我只是想了解最好的方法

这是一个非常常见的用例。这种逻辑的理想位置是控制器

实际的删除按钮将使用以下标记呈现,请注意,标记包括对内置操作帮助器的调用。:/code>Remove

我想用
{{optionalRemoveEntityButton entity}}

我建议您保留原始标记

除非有更好的方法来实现我的目标

将逻辑排除在模板之外是一个很好的目标,但通常这并不意味着要构建大量的把手助手。通常,只有在发现某些显示逻辑在许多视图中重复时,才会生成帮助器

另一种方法是使用
{{{if}}
帮助程序有条件地显示按钮

{{#if showDeleteButton}}
  <button class="btn btn-danger" {{action "removeEntityFunctionInController" entitity}}><i class="icon-remove icon-white"></i> Remove</button>
{{/if}}
{{#如果显示删除按钮}
去除
{{/if}
您需要将ArrayController的itemController属性设置为将包装每个单独项的控制器(可能是ObjectController)的名称。然后在该itemController上定义
showDeleteButton
方法。有关此设置的详细信息,请参阅文档

我有一个在实体数组上迭代的模板。我想根据一些逻辑为这些实体中的一些显示一个“删除”按钮,我只是想了解最好的方法

这是一个非常常见的用例。这种逻辑的理想位置是控制器

实际的删除按钮将使用以下标记呈现,请注意,标记包括对内置操作帮助器的调用。:/code>Remove

我想用
{{optionalRemoveEntityButton entity}}

我建议您保留原始标记

除非有更好的方法来实现我的目标

将逻辑排除在模板之外是一个很好的目标,但通常这并不意味着要构建大量的把手助手。通常,只有在发现某些显示逻辑在许多视图中重复时,才会生成帮助器

另一种方法是使用
{{{if}}
帮助程序有条件地显示按钮

{{#if showDeleteButton}}
  <button class="btn btn-danger" {{action "removeEntityFunctionInController" entitity}}><i class="icon-remove icon-white"></i> Remove</button>
{{/if}}
{{#如果显示删除按钮}
去除
{{/if}

您需要将ArrayController的itemController属性设置为将包装每个单独项的控制器(可能是ObjectController)的名称。然后在该itemController上定义
showDeleteButton
方法。有关此设置的详细信息,请参阅文档。

Hi Michael。。谢谢你。。这真的很有效。如果有其他人出现,他们应该知道“property”原型扩展需要应用于条件逻辑函数。这告诉Ember将函数视为属性,以便if{{if}}条件帮助器将调用该函数并使用返回值来确定是否执行条件块。否则{{#if}}助手只需检查函数是否存在。。。。谢谢嗨,迈克尔。。谢谢你。。这真的很有效。如果有其他人出现,他们应该知道“property”原型扩展需要应用于条件逻辑函数。这告诉Ember将函数视为属性,以便if{{if}}条件帮助器将调用该函数并使用返回值来确定是否执行条件块。否则{{#if}}助手只需检查函数是否存在。。。。谢谢
{{#if showDeleteButton}}
  <button class="btn btn-danger" {{action "removeEntityFunctionInController" entitity}}><i class="icon-remove icon-white"></i> Remove</button>
{{/if}}