如何调用“{Model.Foo}更新”模型更新后?

发布于 2024-12-07 19:46:19 字数 1476 浏览 0 评论 0原文

我有一个 javascriptMVC 模型

/**
 * @class Hzfrontend.Models.Warmwasser
 * @parent index
 * @inherits jQuery.Model
 * Wraps backend warmwasser services.  
 */
$.Model('Hzfrontend.Models.Warmwasser',
/* @Static */
{
    findAll: "/api/warmwasser",
    findOne : "/api/warmwasser/{id}",
    update : "/api/warmwasser/{id}"
},
/* @Prototype */
{
    update : function(attrs, success, error){
        $.ajax({
            type: 'PUT',
            url:"/api/warmwasser/"+this.id,
            data: $.toJSON(this), 
            success: success,
            error: error,
            dataType: "json"});
    }
});

和一个控制器:

$.Controller('Hzfrontend.Warmwasser.List',
/** @Static */
{
    defaults : {}
},
/** @Prototype */
{
    init : function(){
        this.element.append(this.view('init',Hzfrontend.Models.Warmwasser.findAll()) )
    },
    '.waterTemperature change': function( el ){
            var mod = el.closest('.warmwasser').model();
            mod.attr('waterTemperature', el.val());
            mod.update();
            steal.dev.log("update waterTemperature");
    },
    "{Hzfrontend.Models.Warmwasser} updated" : function(Warmwasser, ev, warmwasser){
        warmwasser.elements(this.element)
              .html(this.view('warmwasser', warmwasser) );
        steal.dev.log("updated");
    }
});

更新完成后,我想在控制器中调用更新后的回调。如何做到这一点? 如果我使用 ./fixtures/fixtures.js' 在没有服务器后端的情况下测试应用程序,它可以正常工作。

谢谢。

I have a javascriptMVC Model

/**
 * @class Hzfrontend.Models.Warmwasser
 * @parent index
 * @inherits jQuery.Model
 * Wraps backend warmwasser services.  
 */
$.Model('Hzfrontend.Models.Warmwasser',
/* @Static */
{
    findAll: "/api/warmwasser",
    findOne : "/api/warmwasser/{id}",
    update : "/api/warmwasser/{id}"
},
/* @Prototype */
{
    update : function(attrs, success, error){
        $.ajax({
            type: 'PUT',
            url:"/api/warmwasser/"+this.id,
            data: $.toJSON(this), 
            success: success,
            error: error,
            dataType: "json"});
    }
});

and a Controller:

$.Controller('Hzfrontend.Warmwasser.List',
/** @Static */
{
    defaults : {}
},
/** @Prototype */
{
    init : function(){
        this.element.append(this.view('init',Hzfrontend.Models.Warmwasser.findAll()) )
    },
    '.waterTemperature change': function( el ){
            var mod = el.closest('.warmwasser').model();
            mod.attr('waterTemperature', el.val());
            mod.update();
            steal.dev.log("update waterTemperature");
    },
    "{Hzfrontend.Models.Warmwasser} updated" : function(Warmwasser, ev, warmwasser){
        warmwasser.elements(this.element)
              .html(this.view('warmwasser', warmwasser) );
        steal.dev.log("updated");
    }
});

after the update completed I want to invoke the updated callback in the controller. How to do this?
If I use the ./fixtures/fixtures.js' to test the app without a server backend, it works without any problems.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傻比既视感 2024-12-14 19:46:19

该代码应该可以工作。您的服务器返回什么作为响应?您应该返回包含您更新的对象的 JSON 响应。

That code should work. What do you return as a response from your server? You should return an JSON response with the object that you updated.

恏ㄋ傷疤忘ㄋ疼 2024-12-14 19:46:19

您不应该有原型更新方法。

You shouldn't have a prototype update method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文