使用Ember.js将新行动态地插入到表上下文中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Ember.js将新行动态地插入到表上下文中相关的知识,希望对你有一定的参考价值。

我是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>

一个简单的表绑定来自我的控制器的内容。

这是我的控制器和应用程序:

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');

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

我究竟做错了什么?为什么我的桌子没有创建新内容?

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

答案

更新分析

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

你觉得在典型的Ember陷阱中:初始值永远不应该是对象,因为它们将被所有类实例共享...请参阅this article以获取更多信息。

修复示例 - 仍然建议实施

通过一些改进更新了你的JSFiddle @ http://jsfiddle.net/MikeAski/AgyAk/12/(最值得注意的是:使用控制器而不是直接使用ArrayProxy。它更加惯用,可以切换到Router基础设施)。

以上是关于使用Ember.js将新行动态地插入到表上下文中的主要内容,如果未能解决你的问题,请参考以下文章

在oracle中插入表B后创建触发器以将新行添加到表A中时出错

插入新行表1复制到表2选定字段后mysql触发器没有重复

C#/SQL 监听器告诉我一行是不是已插入到表中

n_live_tup 和 n_dead_tup 的变化是不是意味着一些新行被插入到表中

如何创建一个 Postgres 11 触发器函数,该函数在插入或更新到表“a”时在表“b”中插入一个新行?

Jquery在某个索引处将新行插入表中