1

セットの名前と説明に関連付けられたリアクティブな値を持つ 2 つのテキスト入力フィールドがあるとします。

{{#with set}}
<input type="text" id="set_name" value="{{name}}" placeholder="Untitled Set"/>
<input type="text" id="set_desc" value="{{description}}" placeholder="Add Description"/>
{{/with}}

現在、ユーザーが入力フィールドを変更すると、セットの属性を手動で更新するコードを追加する必要があります (CoffeeScript で)。

update = (set, field, newVal)->
  newVal = $.trim(newVal)
  if newVal && set[field] != newVal
    keyVal = {}
    keyVal[field] = newVal
    Sets.update(_id:set._id, {$set:keyVal})

Template.cardSubmit.events
  'change #set_name': (evt)->
    update(this, 'name', evt.target.value)
  'change #set_desc': (evt)->
    update(this, 'description', evt.target.value)

これはしばらくするとかなり繰り返されます。Meteorでこれを宣言的に行う方法はありますか? そうでない場合、そのような双方向の反応性を可能にするために Meteor を拡張する方法について何か提案はありますか?

Knockout.js には、これを行うためのきちんとした方法があります (もちろん、クライアント側でのみ): http://knockoutjs.com/documentation/value-binding.html

4

1 に答える 1