我在这里做错了什么?我为我的回调使用了胖箭头=>,但是当代码达到cb.onEndElement并调用@returner时,我得到一个空对象异常。那么,为什么@returner不存在?为了将其绑定到的Parser
实例CoffeeScript范围问题
class Parser
constructor:() ->
@returner = (data) ->
searchParser: new xml.SaxParser (cb) =>
cb.onStartElementNS (elem, attrs, prefix, url, ns) =>
if elem is "results" then @results = []
else if elem is "title" then @curr = "title"
else @curr = "none"
cb.onCdata (cdata) =>
if @curr is "title" then @book.title = cdata
cb.onEndElementNS (elem, prefix, url) =>
@results.push @book if elem is "book"
cb.onEndDocument =>
@returner @results
search: (str, callback) ->
@returner = callback
@searchParser.parseString str
p = new Parser
p.search "somexml", (data) ->
console.log JSON.stringify data
我的答案解决了您的问题吗? – nicolaskruchten 2011-05-18 22:43:14
是的,谢谢。 – Matthew 2011-05-23 19:32:41