Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 表单数据保存时模型属性被破坏_Rest_Backbone.js_Marionette_Frontend_Syphon - Fatal编程技术网

Rest 表单数据保存时模型属性被破坏

Rest 表单数据保存时模型属性被破坏,rest,backbone.js,marionette,frontend,syphon,Rest,Backbone.js,Marionette,Frontend,Syphon,在主干网/木偶应用程序中提交表单后,保存现有模型时遇到问题 因此,我提交表单并使用backbone.syphon创建表单数据的表示形式。我构建的对象如下所示: {languages: { { de_DE: { default: false enabled: true }, en_US: { ... } ... } } 我试图将其

在主干网/木偶应用程序中提交表单后,保存现有模型时遇到问题

因此,我提交表单并使用backbone.syphon创建表单数据的表示形式。我构建的对象如下所示:

{languages: {
    {
        de_DE: {
            default: false
            enabled: true
        },
        en_US: {
            ...
        }
        ...
    }
}
我试图将其保存到具有如下属性的主干模型:

attributes: {
    id: "5"
    languages: {
        de_DE: {
             default: false,
             label: "German"
             language: "de_DE"
             selected: false
         },
         en_CA: {
         ...
         },
         ...
     }
}
问题是,当我使用上述数据结构保存现有模型时,默认和标签实例将从模型中完全删除。它们甚至没有被发送到服务器。虽然它们确实位于
previousAttrs
对象中,但它们只是被完全删除了

我的模型的同步设置实例看起来是这样的:

sync: function(method, model, options){
    var baseUrl = window.location.origin+'/qp-api/v1/master-app/';

    var config = {}

    switch(method){
         case "create":
         break;
         case "read":
             config = _.extend(config, {
                 method: "GET",
                 url: baseUrl+this.id+'/languages'
             });
         break;
         case "update":
             config =_.extend({
                 method: "PUT",
                 url: baseUrl+this.id+'/languages'
             });
        break;
        case "delete":
        break;
    };
    options = _.extend(options, config);

    return Backbone.Model.prototype.sync.call(this, method, model, options);
}, 

我做错了什么?我认为主干的save函数只会更新更改的属性。在我看来,数据对象应该映射到模型属性的设置。他们不应该更新吗?我是不是不了解现有模型是如何保存的?

首先我想说的是,如果(languages.save(data){……},进行这样的检查不是一个好主意
model.save()
将返回,因此您的
if
条件将无法按预期工作

您的问题的解决方案之一是重写语言模型的
save
方法

var Languages = Backbone.Model.extend({ 
   // Declaration of you model 
   save: function (attrs, options) { 
   // merge attrs here with defaults/initial values
   return this.constructor.__super__.save.call(this, attrs, options); 
   } 
})

希望这有帮助

首先,我想说的是,如果(languages.save(data){….},进行这样的检查不是一个好主意
model.save()
将返回,因此您的
if
条件将无法按预期工作

您的问题的解决方案之一是重写语言模型的
save
方法

var Languages = Backbone.Model.extend({ 
   // Declaration of you model 
   save: function (attrs, options) { 
   // merge attrs here with defaults/initial values
   return this.constructor.__super__.save.call(this, attrs, options); 
   } 
})

希望这有帮助

首先,我想说的是,如果(languages.save(data){….},进行这样的检查不是一个好主意
model.save()
将返回,因此您的
if
条件将无法按预期工作

您的问题的解决方案之一是重写语言模型的
save
方法

var Languages = Backbone.Model.extend({ 
   // Declaration of you model 
   save: function (attrs, options) { 
   // merge attrs here with defaults/initial values
   return this.constructor.__super__.save.call(this, attrs, options); 
   } 
})

希望这有帮助

首先,我想说的是,如果(languages.save(data){….},进行这样的检查不是一个好主意
model.save()
将返回,因此您的
if
条件将无法按预期工作

您的问题的解决方案之一是重写语言模型的
save
方法

var Languages = Backbone.Model.extend({ 
   // Declaration of you model 
   save: function (attrs, options) { 
   // merge attrs here with defaults/initial values
   return this.constructor.__super__.save.call(this, attrs, options); 
   } 
})

希望这有帮助

您正在使用
model.save()
?是的。因此,我的模型的名称是languages,我编写的代码如下:
if(languages.save(data){
})
您使用的是
model.save()
?是的。因此,我的模型的名称是languages,我编写的代码如下:
if(languages.save(data){
})
您使用的是
model.save()
?是的。因此,我的模型的名称是languages,我编写的代码如下:
if(languages.save(data){
})
您使用的是
model.save()
?是的。因此,我的模型的名称是languages,我编写的代码如下:
if(languages.save(data){
})
,这确实有帮助。非常感谢。:)此外,如果答案对你有帮助的话,你可以把它标为“正确答案”或投赞成票。这确实有帮助。非常感谢。:)此外,如果答案对你有帮助的话,你可以把它标为“正确答案”或投赞成票。这确实有帮助。非常感谢。:)此外,如果答案对你有帮助的话,你可以把它标为“正确答案”或投赞成票。这确实有帮助。非常感谢。:)此外,如果答案对你有帮助,你可以把它标为“正确答案”或投赞成票。