Backbone: model.set์— ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ต์…˜ ์ œ๊ณต

์— ๋งŒ๋“  2013๋…„ 06์›” 21์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jashkenas/backbone

set์˜ ๋Œ€์‘ํ•˜๋Š” ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปฌ๋ ‰์…˜ ๊ฐœ์ฒด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— ํŒŒ์„œ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•˜๋Š” "parse" ์˜ต์…˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ธฐ๋Šฅ์„ ๊ฑฐ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ปฌ๋ ‰์…˜์„ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ๊ฐ์ฒด๊ฐ€ ๋ณ‘๋ ฌ ์ˆ˜์ง‘์— ๋Œ€ํ•ด ๋™์ผํ•œ ์˜ต์…˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ƒ๋žต๋œ๊ฒŒ ๋งž๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์ถ”๊ฐ€ ๊ฒ€์‚ฌ ์‹œ ์žฌ์„ค์ •์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ตฌ๋ฌธ ๋ถ„์„ ์˜ต์…˜์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

duplicate

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

parse ์˜ต์…˜์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ model.set(model.parse(data)) ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ collection.reset ๋“ฑ๊ณผ์˜ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  13 ๋Œ“๊ธ€

๋‚˜๋Š” ์ด๊ฒƒ ์˜ ์ˆ˜ํ–‰ ๋Šฅ๋ ฅ์— ๋Œ€ํ•ด

๊ตฌํ˜„์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์งˆ๋ฌธ์€ ๊ทธ๋ ‡์ง€ ์•Š์€ ์ด์œ ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์†์„ฑ ๊ฐœ์ฒด ๋Œ€์‹  ํ‚ค val์ด ์ œ๊ณต๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

์ด๊ฒƒ์€ ์ข‹์€ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋‚ด ๋จธ๋ฆฌ ๊ผญ๋Œ€๊ธฐ์— ๊ฑธ๋ฆผ๋Œ์ด ๋˜๋Š” ๊ฒฝ์šฐ๋Š” parse ์™€ ํ•จ๊ป˜ defaults parse ์ž…๋‹ˆ๋‹ค( ์—ฌ๊ธฐ์„œ ์ด๋ฒคํŠธ ์ˆœ์„œ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค ). ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ƒ๊ฐ์ด ๋‹ด๊ธด PR์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ์ฐ”๋Ÿฌ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์ œ๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ‹ฐ์ผ“์„ ์—ด๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ #2013์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค... Collection#set ๊ฐ€ ์žˆ๊ธฐ ์ „์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” API ํŒจ๋ฆฌํ‹ฐ๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ข‹์€ ๊ฒƒ์ด๋ผ๊ณ  @wookiehangover์— ๋™์˜ํ•˜๊ณ , ๋‚œ ๊ทธ๋ƒฅ ์‚ฌ์šฉํ•˜๊ณ  (์ค‘์ฒฉ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ๋ฌธ ๋ถ„์„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ๊ฒฝ์šฐ ๊ฑด๋„ˆ ํ•œ model.set(model.parse(data)) ์—์„œ ์–ธ๊ธ‰ ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ํ‹ฐ์ผ“).

@tgrisser ์–ด๋–ป๊ฒŒ ๊ทธ ๋ฌธ์ œ๋ฅผ ๋†“์ณค๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” ๊ทธ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๋…ผ์˜์— ๋™์˜ํ•˜์ง€๋งŒ ๋” ๊ฐ•๋ ฅํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ถ€ํŠธ์ŠคํŠธ๋žฉ๋œ ๋ฐ์ดํ„ฐ(๋‚ดํฌ๋œ ๊ตฌ๋ฌธ ๋ถ„์„๋„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Œ)๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋„ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ Collection#set ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด์ œ ํŒจ๋ฆฌํ‹ฐ ์ธ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํ•„์š”ํ•œ ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹น์‹ ์€ ํ†ตํ™” ํ•  ๊ฒฝ์šฐ set ๊ฐœ์ฒด๊ฐ€ ๋‹น์‹ ์ด ๋ชจ๋ธ์˜ ๋‹น๊ธฐ ๋  ๊ฑฐ๋ผ๊ณ  ์ค‘์ฒฉ ๋œ ๋ฐ์ดํ„ฐ๊ฐ€์žˆ๋Š” ๋ชจ๋ธ์ด ์กด์žฌํ•˜๋Š”์— parse . ์ €๋Š” ์ด ๊ธฐ๋Šฅ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค.

class Book extends Models.Document
   constructor: ->
      <strong i="8">@info</strong> = new InfoModel()
      <strong i="9">@chapters</strong> = new ChaptersCollection()
      super

   parse: (attrs, options) ->
      @info.set(attrs.info, options)
      @chapters.set(attrs.chapters, options)
      _.omit(attrs, 'info', 'chapters')

์ด์ œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

book.set({
  title: 'title',
  info: {
    some: data
    someNested: {
        otherData: ...
    }
  },
  chapters: [{...}, {...}]
}, {parse: true});

์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค... (์˜ˆ, model.set(model.parse( ์ž‘๋™ํ•˜์ง€๋งŒ ์ปฌ๋ ‰์…˜ ๋ฐ ๋ชจ๋ธ์˜ ์ค‘์ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ฐ ๋™์ผํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.)... #2623์˜ ๋ฌธ์ œ์—์„œ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์—.

์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ธฐ๋ณธ๊ฐ’๊ณผ ํ•จ๊ป˜ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ณธ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์ด์ค‘ ๊ตฌ๋ฌธ ๋ถ„์„ ์—†์ด?

๊ธฐ๋ณธ๊ฐ’๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด set ์— ์ „๋‹ฌํ•˜๋„๋ก ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜์— ํ• ๋‹น๋œ options.defaults ์ƒ์„ฑํ•˜์—ฌ ๊ตฌ๋ฌธ ๋ถ„์„ ๋‹จ๊ณ„ ํ›„์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋””์ž์ธ ๊ฒฐ์ •์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋Œ€์ฒด ์†”๋ฃจ์…˜์„ ์ƒ๊ฐํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋Œ€ํ™”๋ฅผ ๊ณต๊ฐœ PR๋กœ ์˜ฎ๊ธฐ์ž...

์ด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

parse ์˜ต์…˜์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ model.set(model.parse(data)) ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ collection.reset ๋“ฑ๊ณผ์˜ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰