我有一个这样的搜索模型(从https://github.com/maccman/quora2得到这个)
Spine = require('spine')
classMethods =
query: (params) ->
@select (rec) ->
rec.query params
instanceMethods =
query: (params) ->
attributes = @query_atts?() || @attributes()
for key of attributes
value = attributes[key]
if value?.query?(params).length
return true
else if value && typeof value == "string"
value = value.toLowerCase()
return true if value.indexOf(params) != -1
return false
class Search extends Spine.Class
@include Spine.Events
Search.Model =
extended: ->
@extend classMethods
@include instanceMethods
Search.include
init: (models...) ->
console.log('models: ', models)
@models = models
@results = []
query: (params) ->
@clear()
return unless params
@params = params.toLowerCase()
@models.forEach (model) =>
console.log(typeof(model))
continue until typeof(model) == 'undefined'
results = model.query(@params)
@results = @results.concat(results)
@trigger "change"
clear: ->
@results = []
@trigger "change"
each: (callback) ->
@results.forEach(callback)
module.exports = Search
和一个页面模型:
Spine = require('spine')
class Page extends Spine.Model
@configure 'Page', 'title', 'description'
@extend require('models/search').Model
constructor: ->
super
module.exports = Page
我遇到的问题是,每当在我的控制器中实例化搜索时:
Search.init(Page)
并记录init得到的参数我有页面作为第一个参数,然后我有4个未定义。
models: [Page(title, description), undefined, undefined, undefined, undefined]
这些是从哪里来的?当然它在 quora 中运行良好,如果我不在models...
init 中使用它也会运行良好。