- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在慢慢开始掌握 EmberJS 的窍门。不幸的是,我遇到了一个我似乎无法解决的问题。
我有一个复杂的数据结构,我通过 JSON 检索它,它有多个嵌套数组,我似乎无法嵌套 #each 助手。
我已将我的模板设置如下(缩写):
{{#each Servers}}
<div class="server">
<h1>{{unbound Name}}</h1>
Time: {{jsonDate CurrentTime}}<br />
<table>
{{#each Processes}}
<tr>
<td>{{unbound Name}}</td>
<td>{{unbound Location}}</td>
</tr>
{{/each}}
</table>
</div>
{{#/each}}
第二个循环似乎没有运行,当我修改 Ember 以记录一条消息时,#the second each 被调用,但它似乎不知道该做什么。
当我用#Queue 替换第二个#each 时,它起作用了,但是就在-元素之前,为列表中的每个元素插入了一个“未定义”文本(负 1)。
当我将#each 移出另一个循环并放入队列的直接路径(例如 Servers.0.Queue)时,它工作正常,所以它肯定不是数据。
我该如何解决这个问题?如果不可能嵌套#each,我如何为其他方法添加“未定义”文本?还有其他可能吗?
附言。出于性能原因,我使用 unbound,我一次性更新了 Servers 对象并观察到,因此不需要使用绑定(bind)属性——因为我注意到它会显着降低浏览器性能(13% 的 CPU 使用率,而 unbound 给了我 0 %)。不确定是否相关。
编辑
请参阅:http://jsfiddle.net/PTC9B/7/
ServerOverview2a 方法毕竟有效,显然 ServerOverview2b 生成了我之前描述的“未定义”文本 - 可能应该为此提交错误报告?
我现在的问题是:为什么嵌套的#each 不起作用而#Processes 起作用?
最佳答案
看起来您的散列中的属性引起了麻烦:使用大写属性 Processes
不起作用 - 如果您将其更改为 processes
每个
助手都按预期工作,请参阅 http://jsfiddle.net/pangratz666/ndkWt/ :
<script type="text/x-handlebars" data-template-name="app-server">
<h1>Default</h1>
{{#each data.Servers}}
<div class="server">
<h1>{{unbound this.Name}}</h1>
Time: {{unbound this.CurrentTime}}<br />
<table>
{{#each this.processes}}
<tr>
<td>{{unbound Name}}</td>
<td>{{unbound Location}}</td>
</tr>
{{/each}}
</table>
</div>
{{/each}}
</script>
App = Ember.Application.create({
ready: function() {
Ember.View.create({
templateName: 'app-server',
dataBinding: 'App.dataController.data'
}).append();
App.dataController.getServers();
}
});
App.dataController = Ember.Object.create({
data: {},
getServers: function() {
this.set('data', Ember.Object.create({
"Servers": [
{
"Name": "USWest",
"CurrentTime": "1337",
"processes": [
{
"Name": "apache.exe",
...
}
]}
]
}));
}
});
恕我直言,引用 this.Processes
应该在 #each
助手中工作,因此这可能是一个错误。您是否能够更改从服务器获取的 JSON 的属性名称?否则,您可能会编写一个帮助程序,在使用之前将 JSON 的属性名称小写 ...
另一个注意事项:Application#ready
在您提供的 JSFiddle 中不起作用,因为您指定了要执行的 JS onDomReady
(选择左上角的下拉列表JSFiddle)。如果将其更改为 no wrap
,则可以在 ready
回调中访问 App
。
关于命名的另一个注意事项:实例应命名为小写,类应命名为大写。因此在您的示例中为 App.serverOverview1 = Ember.View.create({ ... });
。
关于javascript - 嵌套的 HandlebarsJS #each helpers 与 EmberJS 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10306063/
link-to帮助程序返回以下错误: Uncaught Error: each doesn't match link-to - 5:10 模板:
默认情况下,ember-cli 生成的帮助程序如下所示: import Ember from 'ember'; export function boundLoc(input) { return i
我正在发现 .Net Core 标签助手,我只是想知道是否有任何标签助手可以复制 @Html.DisplayFor。我认为 label tag helper 复制了 @Html.DisplayName
在本地访问我的 Rails 应用程序时,加载任何页面时出现以下错误: /!\ FAILSAFE /!\ Tue Jul 06 15:08:17 -0500 2010 Status: 500 Inte
m.ResetDayComponent.WeightedAverageMethodID, DropDownData.AveragingMethodList(), "", new { @class =
我正在使用 yii\helpers\Url 助手来访问我网站的菜单中的 url。但是应该有一个 url 去另一个网站,比如 www.anothersite.com/action . 如何通过 yii\
我不确定这是否可能。 我有一堆@Helper位于 View 内以及其他 View 中: @helper ViewHelper1() { ... } @helper ViewHelper2() {
有没有办法在 @helper 声明中访问完整的 @Url 帮助程序对象? 我想做这样的事情...... @helper Button(System.Web.Mvc.ActionResult actio
ASP.Net MVC 6 引入了标签助手功能。 为什么我们应该使用标签助手而不是以前版本提供的 Helper 类? 最佳答案 引入标签助手有几个原因。 Scott Hanselman talks i
我正在尝试从我的 ember.js 应用程序中的另一个助手调用助手,但不知道 blazes 在 2.x 中如何执行此操作。作为引用,我使用 Ember 2.4 和 Ember-CLI。 有几个答案在旧
我想在 Twitter 意图按钮上使用一个图标。 "btn" %> 这可能吗? 页面上还有 2 个其他按钮使用 button_tag 助手,我可以将图标插入到这些按钮中。我应该将 button_to
我一直在基于 Scott Gu's post 在 Razor 中实现一些 @helper 函数,事情进展顺利。 但我想知道的是,是否可以从另一个调用一个 @helper。例如,我有以下助手显示 Dat
我需要创建自定义 html 辅助方法。据我所知有两种方式: 使用@helper razor 语法。 http://weblogs.asp.net/scottgu/archive/2011/05/12/
我刚刚从另一台计算机上克隆了一个我正在使用的存储库。当我尝试通过运行“rake db:migrate”进行数据库迁移时,出现以下错误: AbstractController::Helpers::Mis
我的助手是这样工作的: def some_help(in_string) in_string + " and more" end 但我希望它在输出之前对 执行操作,并且我一直按字面意思获取 字符本
除了在 .Net Core 2 中,我正在尝试解决这个问题。 Can I use a Tag Helper in a custom Tag Helper that returns html? ” 我想
是否可以在另一个 View 助手中使用 View 助手?我们必须查看助手: 帮助我1 use Zend\View\Helper\AbstractHelper; class HelpMe1 extend
Creating MVC3 Razor Helper like Helper.BeginForm() 说它可以使用扩展方法和实现 IDisposable 来完成。可以通过使用声明性 Razor 助手来
所以如果我有一个模板: {{foo}} 和模板助手: Template.myTemplate.foo = function() { blah = Session.get('blah');
我正在尝试为我的 Reddit 机器人运行代码。它可以毫无问题地登录 Reddit,但是当它到达这段代码时,它会抛出一个错误: all_comments = praw.helpers.flatten_
我是一名优秀的程序员,十分优秀!