首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用backbonejs和jquery将模型同步到asp.net服务器

使用backbonejs和jquery将模型同步到asp.net服务器
EN

Stack Overflow用户
提问于 2011-10-06 13:23:46
回答 1查看 413关注 0票数 1

我想看看当在扩展模型上指定了urlRoot时,如何使用model.save()方法将模型保存到服务器,但是当我请求model.fetch()do model.save()时,ajax请求从不触发。注意:我想这在不使用Collection的情况下是可能的吗?

HTML

代码语言:javascript
运行
复制
<div id="placeholder"></div>
<script type="text/template" id="view_template">
    Hello <%= name %>, here is your script <%= script %>
</script>

模型

代码语言:javascript
运行
复制
 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);
        }
    });

视图

代码语言:javascript
运行
复制
 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;
        }
    });

应用程序

代码语言:javascript
运行
复制
$("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 & fetch,但根据文档,这应该会触发带有POST -> SAVE & GET -> FETCH的ajax请求。但它所做的就是在sync函数中将参数记录到控制台中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-06 16:32:07

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

代码语言:javascript
运行
复制
return (this.sync || Backbone.sync).call(this, 'read', this, options);

我用你的代码做了一个快速测试,如果我重命名你的Model.sync方法,我会看到Ajax请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7670568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档