4

テーブルにテーブルを追加できることがわかりました

$('#mytable').append("<tr><td>").text("yo").append("</td></tr>");

しかし、私がそれを複数回行うと:

$('#mytable').append("<tr><td>").text("yo1").append("</td></tr>");
$('#mytable').append("<tr><td>").text("yo2").append("</td></tr>");

最後の「yo2」だけを使ってしまいます。アンダースコアを使用してバックボーン モデルを反復処理し、行を HTML テーブルに動的に挿入する方法はありますか。前もって感謝します。

4

3 に答える 3

4

あなたの倍数appendtext呼び出しは、そのように連鎖できないため失敗しています。バックボーンとアンダースコアを使用したいので、_.each( docs ) を使用して属性を反復処理し、それらをテーブルに追加することができます。このような:

var TableModel = Backbone.Model.extend({
    defaults: {
        "foo": "foo",
        "bar": "bar",
        "blah": "blah"
    }
});

var TableView = Backbone.View.extend({
    el: '#mytable',
    initialize: function() {
    },
    render: function() {
        _.each(this.model.attributes, function(val, key) {
            var row = "<tr><td>" + val + "</td></tr>";
            $('#mytable').append(row);
        });
        return this;
    }
});

var newModel = new TableModel();
var modelView = new TableView({model: newModel});
modelView.render();

jsfiddle here、意図したとおりに機能します。ダミーのモデルとビューを作成しているだけです。ビューのrender()関数では、モデルを繰り返し処理し、それぞれを行内でテーブルに追加しています。

于 2013-03-20T04:20:09.690 に答える
1

バックボーンには詳しくありませんが、値を配列に格納できる場合は、次のことができます。

$(document).ready(function(){
    var values = ['yo', 'yo2'],
    text = [];

    for(i=0;i<values.length;i++){
        text.push("<tr><td>"+values[i]+"</td></tr>");
    }
    $('#myTable').append(text.join(""));
});
于 2013-03-20T03:51:41.943 に答える
0

バックボーンを使用する場合は、underscore/lodash テンプレート エンジンを使用して、次のようにデータを html コードに変換できます。

var data = ['yo1', 'yo2'];
var templ = "<tr><td><%=value%></td></tr>";
var rows = _.map(data, function(item) { return _.template(templ, {value: item}); });
var html = rows.join('');
$('#mytable').empty().append(html);
于 2013-03-20T07:55:20.393 に答える