gpt4 book ai didi

javascript - 使用 Ember.js 将新行动态插入表上下文

转载 作者:行者123 更新时间:2023-11-30 13:17:14 24 4
gpt4 key购买 nike

我是 Ember 和 Handlebars 的新手。我正在尝试创建一个包含动态内容的表格。我将代码添加到 jsfiddle

我有以下代码:

<script type="text/x-handlebars">
<table border="1" bordercolor="FFCC00" style="background-color:FFFFCC" width="400" cellpadding="3" cellspacing="3">
{{#each Table.tableController}}
<tbody>
<tr>
<td width ="30%">{{title}}</td>
<td width ="30%">{{artist}}</td>
<td width ="40%">{{genre}}</td>
</tr>
</tbody>
{{/each}}
</table>

绑定(bind)来 self 的 Controller 的内容的简单表格。

这是我的 Controller 和应用程序:

Table = Ember.Application.create({});

Table.Cell = Ember.Object.extend({
title: null,
artist: null,
genre: null,
listens: 0
});

Table.tableController = Ember.ArrayProxy.create({
content: [],
init: function() {
var data = Table.Cell.create({
title: 'Ruby',
artist: 'Kaiser Chiefs',
genre: 'Indie Rock',
});
this.pushObject(data);
data = Table.Cell.create({
title: 'Somebody Told Me',
artist: 'Killers',
genre: 'Indie Rock',
});
this.pushObject(data);
},
createSong: function(title, artist, genre) {
var cell = Table.Cell.create({
title: title,
artist: artist,
genre: genre,
});
this.pushObject(cell);
},
});

一切正常。

现在我想添加一首新歌,我正在通过 Chrome 控制台使用以下行执行此操作:

 Table.tableController.createSong('Feiticeira', 'Deftones', 'Alternative');

我可以验证是否创建了一个新对象并将其插入到我的内容数组中。但是我的表没有任何变化。

我做错了什么?为什么我的表格没有创建新内容?

我将此代码推送到 jsfiddle 中以获得帮助你帮助我。 Here's the link to the code again.

最佳答案

更新分析

您忘记在 init 中调用 this._super();,这会阻止您的实例进行绑定(bind)管理设置。 ( Fixed revision )

您感觉到一个典型的 Ember 陷阱:初始值永远不应该是对象,因为它们将被所有类实例共享...参见 this article了解更多信息。

修复示例 - 仍然推荐实现

更新了你的 JSFiddle @ http://jsfiddle.net/MikeAski/AgyAk/12/有一些改进(最值得注意的是:使用 Controller 而不是直接使用 ArrayProxy。它更符合习惯并准备好切换到 Router 基础设施).

关于javascript - 使用 Ember.js 将新行动态插入表上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com