私のビューモデルには、ファイル、ファイルの種類、および未使用のファイルの種類のリストがあります。
viewModel =
files: ko.observableArray([
new File({name: "A1", id: 1})
new File({name: "B1", id: 2})
new File({name: "C1", id: 3})
new File({name: "D1", id: 4})
])
types: ko.observableArray(dataTypes)
typesUnused: ko.observableArray(dataTypes)
File
クラスを作成し、その中にtype
プロパティを作成しました。type
使用されていないファイル タイプのリストを埋めるには、プロパティの beforeChange およびその他の afterChange をサブスクライブします。
class File
constructor: (data) ->
@name = data.name
@id = data.id
@type = ko.observable(null)
# Updates array of types not used
@type.subscribe ((oldValue) ->
console.log "OLD: #{oldValue}"
viewModel.typesUnused.remove (item) -> item is oldValue if oldValue
), @, "beforeChange"
@type.subscribe (newValue) ->
console.log "NEW: #{newValue}"
if newValue && viewModel.typesUnused.indexOf(newValue) < 0
viewModel.typesUnused.push newValue
アイデア
アイデアは、ファイルの種類を変更するたびに、変更が発生する前にイベントが発生し、使用されていないファイルの種類のリストに古い種類を追加することです。また、変更後に別のイベントが発生し、使用されていない型のリストから新しい型が削除されます。
問題
- すべてのファイルには、定義されたファイル タイプの配列の最初のタイプが付属しています。この場合「jpeg」
- ファイルの種類を変更すると、他のすべてのファイルの種類が変更されます。
- リストからファイル タイプを削除する
typesUnused
と、types
リストも変更される場合があります。