【问题标题】:syncing a model to asp.net server using backbonejs and jquery使用backbonejs和jquery将模型同步到asp.net服务器
【发布时间】:2011-10-06 05:23:45
【问题描述】:

我想看看如何在扩展模型上指定urlRoot 时使用model.save() 方法将模型保存到服务器,但是当我请求model.fetch()do model.save() 时,ajax 请求永远不会触发。注意:我想如果不使用 Collection 就可以做到这一点吗?

HTML

<div id="placeholder"></div>
<script type="text/template" id="view_template">
    Hello <%= name %>, here is your script <%= script %>
</script>

型号

 window["model"] = Backbone.Model.extend({
        initialize: function () {
            console.log("CREATED");
        },
        defaults:{
            name:"Please enter your name",
            script:"Hello World"
        },
        urlRoot: "index.aspx",
        validate: function (attrs) {

        },
        sync: function (method, model, success, error) {
            console.log("SYNCING", arguments);
        }
    });

查看

 window["view"] = Backbone.View.extend({
        template:_.template($("#view_template").html()),
        initialize: function () {
            console.log("INITIALISED VIEW");
            this.model.bind("change","render",this);
        },
        render: function (model) {
                console.log("RENDERING");
                $(this.el).append(this.template(model));
                return this;
        }
    });

应用

$("document").ready(function () {

    var myModel = new model({
        name: "Stack Overflow",
        script: "alert('Hi SO')"
    });

    var myView = new view({
        model: myModel,
        el: $("#placeholder")

    });

    console.log("SAVING");
    myModel.save();        
    console.log("FETCHING");
    myModel.fetch();


});

正如您在应用程序中看到的那样,我调用 save &amp; fetch,但根据文档,这应该使用 POST -&gt; SAVEGET -&gt; FETCH 触发 ajax 请求。但它所做的只是将参数记录到同步函数的控制台中。

【问题讨论】:

    标签: javascript asp.net rest backbone.js underscore.js


    【解决方案1】:

    我认为您没有看到任何 Ajax 请求的唯一原因是您覆盖了 Model.sync 方法。通常,如果您想替换 Backbone.sync 中实现的默认 Ajax 同步,您只会这样做。请参阅backbone.js 中Model.fetch 中的以下行:

    return (this.sync || Backbone.sync).call(this, 'read', this, options);
    

    我对您的代码进行了快速测试,如果我重命名您的 Model.sync 方法,我会看到 Ajax 请求。

    【讨论】:

    • awesome :) 我在正确阅读文档后发现了它。顺便说一句,你也可以看看这个问题吗stackoverflow.com/questions/7670709/…
    • 看看另一个问题,我现在可以明白为什么您可能需要覆盖同步。我从来不用将 ASP.NET Web 服务与骨干网连接起来。
    猜你喜欢
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多