μ΄κ²μ μΆμ ν΄μ€ @denisnazarov μκ² κ°μ¬λ립λλ€.
ping seΓ±or @machty
@machty μ°λ¦¬λ μ΄κ²μ λΉμ μ λμμ μ¬μ©ν μ μμ΅λλ€
κ·Έλμ μ΄μ ―λ°€μμ΄ λ¬Έμ λ₯Ό κ²ͺμ νμ μ΄κ²μ΄ μμ ν λ°λμ§νμ§ μμμ§ νμ ν μ μμ΅λλ€. λ€μ 컨νΈλ‘€λ¬κ° μλ€κ³ κ°μ ν©λλ€.
App.MyController = Ember.Controller.extend({
queryParams: ['filters'],
filters: ['starred']
});
filters
λ₯Ό null
νκ³ νμ΄μ§λ₯Ό μλ‘ κ³ μΉλ©΄ μμλλ λμμ 무μμ
λκΉ? null
λ₯Ό URLμ seralizeνμ§ μμΌλ©΄ 컨νΈλ‘€λ¬ μμ±μ΄ κΈ°λ³Έκ°μΌλ‘ μ€μ λ©λλ€.
μ΄κ²μ κ±°μ§ κ°κ³Ό κ±°μ§μ μ€μ κ° μ¬μ΄μ λͺ¨νΈνλ€λ μ΄μ ꡬνμ λ¬Έμ μ μ μ¬ν©λλ€. μ΄μ defaultValue
μ null
λλ undefined
μ¬μ΄μμ λͺ¨νΈν΄ 보μ
λλ€.
λ€μμ λΆμΈ 쿼리 λ§€κ° λ³μλ₯Ό μ¬μ©νλ λ λ€λ₯Έ μμ λλ€. http://emberjs.jsbin.com/hamev/2/edit
κΈ°λ³Έκ°μ΄ null
λ‘ μ€μ λμ΄μλ κ²½μ° true
λλ false
μ€μ νλ©΄ μ€μ λ‘ 'true'
λλ 'false'
λ¬Έμμ΄ λ²μ μΌλ‘ μ€μ λ©λλ€
@HeroicEric κ·Έλμ κ·Έκ²μ΄ νμ λμ λΆμΈ true
/ false
κ° λ κ²μ΄λΌλ©΄ null
λ‘ μ€μ νλ μ€λλ ₯μλ μ΄μ λ 무μμ
λκΉ?
μλͺ» λμμ μλ μμ΅λλ€. μ΄ λͺ¨λ μ§λ ¬ν μ½λ μ¬λ‘μ λν μ¬μ© μ¬λ‘κ° λ¬΄μμΈμ§ κΆκΈν©λλ€.
@machty jsbin μμ μμ μ¬μ© μ¬λ‘λ₯Ό λ³΄μ¬ μ£Όλ €κ³ νμ΅λλ€.
μλ₯Ό λ€μ΄, μ¬μ©μ λͺ©λ‘μ νμνκ³ μλλ° λͺ©λ‘μ λͺ¨λ μ¬μ©μ, κ΄λ¦¬μ λλ λΉ κ΄λ¦¬ μ¬μ©μκ° ν¬ν¨λλλ‘ νν°λ§ ν μ μκΈ°λ₯Ό μν©λλ€. λͺ¨λ μ¬μ©μλ₯Όλ³΄κ³ μΆμ λ κΈ°λ³Έμ μΌλ‘ νν°λ₯Ό μ κ±°νλ©΄λ©λλ€.
μ΄μ κ°μ μν©μ΄ 쿼리 λ§€κ° λ³μμ μλ―Έκ° μλλκΉ?
μ΄μμ μΌλ‘ URLμ λ€μκ³Ό κ°μ΅λλ€.
/ users λ λͺ¨λ
/ users? admin = true λ λͺ¨λ κ΄λ¦¬μλ₯Ό νμν©λλ€.
/ users? admin = false λ κ΄λ¦¬μκ° μλ λͺ¨λ μ¬μ©μλ₯Ό νμν©λλ€.
@HeroicEric @machty 컨νΈλ‘€λ¬μ defaultValueκ° μ μλμ§ μμ κ²½μ° ( null
λλ undefined
) κΈ°λ³Έμ μΌλ‘ λ¬Έμμ΄μ μ¬μ©νλ κ²μ΄ μμ΄λμ΄λΌκ³ μκ°ν©λλ€. μ΄κ²μ μ§λ ¬νκ° λ¬Έμμ΄λ‘ κΈ°λ³Έ μ€μ λκΈ° λλ¬Έμ true
λ° false
κ° λ¬Έμμ΄ λ²μ μΌλ‘ λλλ μ΄μ λ₯Ό μ€λͺ
ν©λλ€.
μμ±μ null
λ‘ μ€μ νλ €λ©΄ λ€λ₯Έ κ³³μμ μ νμ κ°μ ΈμμΌνλ€κ³ μκ°ν©λλ€. @machty κ° queryParams
ꡬμ±μ μ νμ μΆκ° ν μμλ μ’μ μ΄μ μ
λκΉ?
μ΄ κ²½μ° μ νμ 'boolean
'λ‘ μ€μ νκ³ κΈ°λ³Έκ°μ null
μ€μ ν μ μμ΅λλ€.
μ΄ JSBin μμ κ° μλλ° λ΄κ°λ³΄κ³ μλ κ²μ΄μ΄ λ¬Έμ μ κ΄λ ¨μ΄ μλμ§ κΆκΈν©λλ€.
http://jsbin.com/dipajezi/1/edit
κΈ°λ³Έμ μΌλ‘μ΄ foo
쿼리 λ§€κ° λ³μμ null
κΈ°λ³Έκ°μ΄ μμΌλ©° μ ν리μΌμ΄μ
μ΄ μμλ λ λͺ¨λΈ νν¬κ° μ²μ νΈμΆ λ λ λ§€κ° λ³μ κ°μ null
. λ§€κ° λ³μ κ°μ΄ null
μ΄λ©΄ "κ° μμ"μ μλ―Ένλ―λ‘μ΄ λ§€κ° λ³μλ₯Ό μ¬μ©νμ¬ μλ²λ₯Ό 쿼리νκ³ μΆμ§ μμ΅λλ€.
κ²μμ΄ : ?page=1
NextPage λ²νΌμ ν΄λ¦νλ©΄ λ€μ μ ννμ§λ§ μ΄λ²μλ page
쿼리 λ§€κ° λ³μλ₯Ό λ³κ²½ν©λλ€. μ΄λ²μλ foo
쿼리 λ§€κ° λ³μμ λ¬Έμμ΄ κ°μ΄ "null"
μΈλ°, λ€μ μ΄μν©λλ€. μ΄ κ²½μ°μλ λ§€κ° λ³μμ κ°μ΄ μλμ§ μ½κ² νμΈν μ μλλ‘ null
κ°μ κ°κ³ μΆμ κ²μ
λλ€.
쿼리 : ?page=1
λ° ?page=1&foo=null
μλ
λ§μ§λ§μΌλ‘ ChangeFoo
λ²νΌμ ν΄λ¦νλ©΄ λ€μ μ ννμ¬ μ΄λ²μλ foo
쿼리 λ§€κ° λ³μμ κ°μ μνλ κ°μΌλ‘ μ€μ ν©λλ€. μ΄μ κ°μ΄ nullμ΄ μλλ―λ‘μ΄ κ°μ μ¬μ©νμ¬ μΏΌλ¦¬ λ¬Έμμ΄μ κ΅¬μ± ν μ μμ΅λλ€.
쿼리 ?page=1&foo=3
@raytiley λ°©κΈ https://github.com/raytiley/ember.js/commit/26a3f8569edb58f8644ce4f9cec7000276c327a6#diff -0631ecfe6138cf2c2eb2d94369c3e846R1640μ λ©λͺ¨λ₯Ό μμ±νμ΅λλ€.
qpλ₯Ό null
λͺ
μ μ μΌλ‘ μ€μ νλ©΄ λͺ¨λΈ νν¬μ λ¬Έμμ΄λ‘ μΊμ€ν
λ©λλ€. null
λ "κ° μμ"μ λνλ΄μΌνκ³ κ°μΈμ΄ null λ¬Έμμ΄μ μνλ©΄ null
κ°μ κΈ°λ°μΌλ‘ μμ± ν μ μκΈ° λλ¬Έμ μ΄κ²μ μ³μ§ μμ κ² κ°μ΅λλ€.
κ·Έλ μ§ μμΌλ©΄ κ°λ§μλ QPλ₯Ό μ λ¬νλ €λ©΄ params.myQP && params.myQp !== "null"
..
λλ μ΄κ²μ΄ ꡬμμ΄λΌκ³ μκ°νμ§λ§ λκ΅°κ° λ€μ ember.jsλ₯Ό μ¬μ©νλ JSBinμμ λ¬Έμ λ₯Ό μ μ¦ ν μ μλ€λ©΄ λ€μ μ΄λ¦΄ κ²μ λλ€. http://s3.amazonaws.com/machty/to_s3_uploads/ember-9fbe6c2a-c124-5c2e-0414 -f5ed36c2a1a2.js
_ λꡬλ ꡬκΈμ ν΅ν΄ μ°Ύμ κ²½μ° _
μ΄ λ¬Έμ λ κΈ°λ³Έμ μΌλ‘ ν΄κ²°λμμ§λ§ 쿼리 λ§€κ° λ³μκ° μ»¨νΈλ‘€λ¬μ μ€μ λμ§ μμ κ²½μ° null
λ₯Ό 'null'
λ‘ μ§λ ¬ννλ κ²½μ°κ° λ¨μ μμ΅λλ€.
var AnimalsController = Ember.Controller.extend({
queryParams: ['myCat']
// myCat: null // deliberately not set, to illustrate the issue
});
export default AnimalsController;
@HeroicEric μ μ¬μ© μ¬λ‘μ κ΄λ ¨νμ¬ μ»¨νΈλ‘€λ¬λ μλͺ λμ κ°μ΄ 무μμΈμ§μ λ°λΌ μ§λ₯μ μΌλ‘ μ§λ ¬ννλ λ°©λ²μ μμ§ λͺ»ν©λλ€. μ΄κ²μ μ΅μ λ²μ (2.6)μμ μλνλ κ² κ°μ΅λλ€.
export default Ember.Controller.extend({
queryParams: [{
redevelopment: {
type: 'boolean'
}
}],
redevelopment: null
});
μΌνλ μ λ² twiddle : https://ember-twiddle.com/3afa1091106a91ce2c1734ae2998bc3f?openFiles=controllers.application.js%2C&route=%2F%3Fredevelopment%3Dtrue
QPλ μΈμ λΆν° μ ν μ€μ μ νμ©ν©λκΉ? μλλ©΄ μλ‘μ΄ APIλ₯Ό μ μνκ³ μμ΅λκΉ?
λ¬Έμνλμ§ μμ κ² κ°μ΅λλ€. μ¬κΈ°λ₯Ό 보면 μ¬μ μ λ μμλ κ² κ°μ΅λλ€.
μ€, λ©μ§λ€μ!
κ°μ¬ν©λλ€, @allthesignals , κ·νμ μ루μ μ λ§€μ° μ μ©ν©λλ€.
μ΄ μ루μ μ μ΄λ»μ΅λκΉ?
{ key: undefined }
~ ?
_ (λ―Έν¬ν¨) _
{ key: null }
~ ?key
{ key: '' }
~ ?key=
{ key: 'null' }
~ ?key=null
μ’μ λͺ©λ‘!
λλ μ΄κ²μ ν¬ν ν κ²μ΄λ€ :
{ key: undefined }
~ [nothing]
_ (λ―Έν¬ν¨) _
{ key: null }
~ [nothing]
_ (λ―Έν¬ν¨) _
{ key: '' }
~ ?key
{ key: 'null' }
~ ?key=null
κ·Έλ¦¬κ³ μλ§λ :
{ key: false }
~ [nothing]
_ (λ―Έν¬ν¨) _
{ key: true }
~ ?key
κ°μ₯ μ μ©ν λκΈ
_ λꡬλ ꡬκΈμ ν΅ν΄ μ°Ύμ κ²½μ° _
μ΄ λ¬Έμ λ κΈ°λ³Έμ μΌλ‘ ν΄κ²°λμμ§λ§ 쿼리 λ§€κ° λ³μκ° μ»¨νΈλ‘€λ¬μ μ€μ λμ§ μμ κ²½μ°
null
λ₯Ό'null'
λ‘ μ§λ ¬ννλ κ²½μ°κ° λ¨μ μμ΅λλ€.