백본 모델 내부에서 인스턴스 변수를 어떻게 정의해야하는지 궁금합니다. 이것은 내가 현재를하고 있어요 방법입니다 :Backbone 모델에서 인스턴스 변수를 정의하는 올바른 방법은 무엇입니까?
class GeneSet extends Backbone.Model
initialize: (parsedGenes)->
@set parsedGenes: parsedGenes
@set geneNames: (gene.gene_name for gene in @get("parsedGenes"))
@set geneIds: ("gene_#{id}" for id in [[email protected]("parsedGenes").length])
@set columnNames: @getColumnNames()
@set columnGroups: @getColumnGroups()
@set geneExpressions: @getGeneExpressions()
@set groupedGeneExpressions: @getGroupedGeneExpressions()
@set extent: @getExtent()
clusterColor: ->
d3.scale.category20()()
getGeneNameById: (geneId)->
@get("geneNames")[@get("geneIds").indexOf(geneId)]
getColumnGroups: ->
_.uniq((@get("columnNames")).map((columnName)->
columnName.split("_")[0]
))
getExtent: ->
expressions = _.flatten(@get("geneExpressions").map (geneExpression)->
geneExpression.map (item)->
item.y
)
d3.extent(expressions)
getColumnNames: ->
Object.keys(@get("parsedGenes")[0]).filter (columnName) ->
!columnName.match(/cluster/) && isNumber(parsedGenes[1][columnName])
getGeneExpressions: ->
@get("parsedGenes").map (gene) =>
@get("columnNames").map (columnName) ->
x: columnName
y: +gene[columnName] # make numeric
이 @set columnGroups: @getColumnGroups()
을 할 약간 중복 보인다 상세 종류의 것 @get("...")
를 사용하여 모든 변수를 얻기 위해 필요 (내가 @variableName
을 할 수 있으면 좋겠다). 내 질문은, 이것이 모델과 인스턴스 변수를 사용하는 올바른 방법인가 아니면 잘못 했는가? 이 일에 어떤 차이가 단지 @model.columnNames
두 번째 방법으로 어떻게 특성을 변경합니까? 설명이 바뀌면 설명을 볼 수 없습니다. 유일한 대안은 ES5 Object.defineProperty를 사용하는 것이지만 장황하고 이전 브라우저와는 호환되지 않습니다. 게다가 그것은 백본의 "길"에 잘 들어 맞지 않습니다. – mpm
나는 누군가 여기서 그것을 한 것을 본다 : http://srackham.wordpress.com/2011/10/16/getters-and-setters-for-backbone-model-attributes/ – nachocab
나는 당신이 위선적 인 말을하지 않았다, 나는 말했다. 당신은 20 개의 소품을 가지고있다. .. 나는 당신이 도우미 기능을 만들 수 있었다고 생각한다. – mpm