1

TopicsListModel 次のようなプロパティを持つサーバー側クラスがあります。

public class TopicsListModel
{
    public TopicsListModel()
    {
        ChildTopics = new HashSet<TopicsListModel>();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<TopicsListModel> ChildTopics { get; set; }
}

リストを返す関数があり、

public JsonResult SearchTopic(String topic)
    {
        var topics = LandingManager.SearchTopics(topic);
        //return Json(topics);
        return new JsonResult { Data = topic, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }

これをバックボーン モデルとコレクションに追加する必要があります。私は Backbone の初心者で、ご想像のとおり苦労しています。どんな助けでも大歓迎です。

次のようなデータを保存するモデルを構築したい:

{    name: "Model1",    id: 1,    submodels: [{ name: "Submodel1", id: 2 }, { name: "Submodel1", id: 2 }] } 

そのような基本的なコレクション、共有したデータを返す ASP.NET MVC コード部分の設定に問題があります。バックボーンで行ったことを共有します。

TestBB = function () {
if (!window.console) window.console = { log: function () { } };

var treeModel = Backbone.Model.extend({});
var treeSubModel = Backbone.Model.extend({});
var treeCollection = Backbone.Collection.extend({
    model: treeSubModel,
    initialize: function () {
        console.log('Collection Initialized');
    }
});
var treeView = Backbone.View.extend({
    el: $('#tree-view'),
    initialize: function () {
        //            this.collection.bind("render", this.render, this);
        //            this.collection.bind("addAll", this.addAll, this);
        //            this.collection.bind("addOne", this.addOne, this);
        _.bindAll(this);
    },
    render: function () {
        console.log("render");
        console.log(this.collection.length);
        $(this.el).html(this.template());
        this.addAll();
        var template = _.template($("#template").html(), {});
        this.el.html(template);
    },
    addAll: function () {
        console.log("addAll");
        this.collection.each(this.addOne);
    },
    addOne: function (model) {
        console.log("addOne");
        view = new treeView({ model: model });
        $("ul", this.el).append(view.render());
    },
    events: { "click #btnFind": "doFind" },
    doFind: function (event) { alert('event fired'); }
});

return {
    TreeView: treeView
};} (Backbone);

提案してください。

4

2 に答える 2

0

コレクションをバックエンドに「バインド」する場合ではありません。fetchつまり、サーバーからコレクションを読み取り、save(同期を介して) 書き込みます。

まず、プロパティを設定して、コレクションにデータが存在する場所を知らせる必要がありurlます。http://backbonejs.org/#Collection-urlを参照してください。

fetch次に、メソッドを使用して実際にデータを取得する必要があります。http://backbonejs.org/#Collection-fetchを参照してください。これは非同期であるため、successコールバックを待つ必要があることに注意してください。

データを保存するには、save個々のモデルでメソッドを使用します。http://backbonejs.org/#Model-saveを参照してください。

于 2012-07-20T09:16:15.893 に答える
-3

解決済み アプローチを理解し、モデルを定義して入力しました!

于 2012-08-02T10:18:57.057 に答える