Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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
Javascript canJS:使用关联加载模型,但只保存;“基础”;模型_Javascript_Jquery_Canjs_Canjs Model - Fatal编程技术网

Javascript canJS:使用关联加载模型,但只保存;“基础”;模型

Javascript canJS:使用关联加载模型,但只保存;“基础”;模型,javascript,jquery,canjs,canjs-model,Javascript,Jquery,Canjs,Canjs Model,,如何在canJS中加载具有关联(在单个请求中)的模型。 我在中找到了它,实际上我不得不重写它一点才能工作(它已经过时了),但它现在可以工作了 我的问题是,如果我更改一个加载的联系人(contact.attr('name','Tom');),然后我想保存它(contact.save();),那么该联系人以及联系人的任务将通过ajax发布到服务器,以进行保存。这是合乎逻辑的,因为任务是联系人的属性 我的问题是,我只想在更新记录时发布联系人姓名、生日和id。我可能应该重写makeRequest方法,

,如何在canJS中加载具有关联(在单个请求中)的模型。 我在中找到了它,实际上我不得不重写它一点才能工作(它已经过时了),但它现在可以工作了

我的问题是,如果我更改一个加载的联系人(
contact.attr('name','Tom');
),然后我想保存它(
contact.save();
),那么该联系人以及联系人的任务将通过ajax发布到服务器,以进行保存。这是合乎逻辑的,因为
任务
联系人
的属性

我的问题是,我只想在更新记录时发布联系人
姓名
生日
id
。我可能应该重写
makeRequest
方法,并在发布到服务器之前删除
tasks
,但我认为应该有一个更优雅的解决方案


希望这里有一些已经处理过这种情况的canJS用户。

我自己也在寻找解决这个问题的方法,我自己想出了一个解决方案,这是受trickey在JavascriptMVC论坛上关于修改
serialize()
model方法的建议的启发

像他的建议一样,我创建了自己的模型类扩展,并在模型上添加了一个
include
字段,您可以在其中列出想要包含的属性(仿照Rails as_json方法)

然后在我的模型中,我使用“include”数组来指示要包含哪些字段。通过省略“与会者”和“演讲者”,这些关联的模型将不会打包到发送回服务器的序列化JSON中

Event = BaseModel.extend('Event', {
  findAll: "GET /admin/events",
  findOne: "GET /admin/events/{id}",
  create: "POST /admin/events",
  update: "PUT /admin/events/{id}",
  destroy: "DELETE /admin/events/{id}",
  attributes: {
    attendees: 'Models.User.models',
    speakers: 'Models.User.models'
  },
  include: ['id', 'name', 'start_time', 'end_time']
}, {});

我自己也在寻找这个问题的解决方案,受trickey在JavascriptMVC论坛上关于修改
serialize()
model方法的建议的启发,我提出了自己的解决方案

像他的建议一样,我创建了自己的模型类扩展,并在模型上添加了一个
include
字段,您可以在其中列出想要包含的属性(仿照Rails as_json方法)

然后在我的模型中,我使用“include”数组来指示要包含哪些字段。通过省略“与会者”和“演讲者”,这些关联的模型将不会打包到发送回服务器的序列化JSON中

Event = BaseModel.extend('Event', {
  findAll: "GET /admin/events",
  findOne: "GET /admin/events/{id}",
  create: "POST /admin/events",
  update: "PUT /admin/events/{id}",
  destroy: "DELETE /admin/events/{id}",
  attributes: {
    attendees: 'Models.User.models',
    speakers: 'Models.User.models'
  },
  include: ['id', 'name', 'start_time', 'end_time']
}, {});

嘿,卡普顿。谢谢你的回答。这可能是一个可行的解决办法,实际上这是一个优雅的解决办法!:)谢谢你分享你的想法。嘿,卡普特隆。谢谢你的回答。这可能是一个可行的解决办法,实际上这是一个优雅的解决办法!:)感谢您分享您的想法。