我在返回Batman.Request调用的结果时遇到了问题。我已经对我称之为回归的地区进行了评论。我很确定我不能只打电话到那里,但我似乎找不到任何文件可以指向正确的方向。
型号:
class Web.Inbox extends Batman.Model
@resourceName: 'inbox'
@persist Web.InboxStorage
@encodeTimestamps()
@classAccessor 'task_entries', ->
request = new Batman.Request
url: 'http://0.0.0.0:3000/inbox'
autosend: false
success: (response) ->
results = new Batman.Set
results.add(Web.TaskEntry.createMultipleFromJSON(response))
console.log(results) # The value I want is here!
return results # I assume the issue is here
request.send()主计长:
class Web.InboxController extends Web.ApplicationController
routingKey: 'inbox'
index: (params) ->
task_entries = Web.Inbox.get('task_entries')
@set('task_entries', task_entries)
console.log(task_entries) # not the same value as I attempt to return
# in the request来自模型的控制台日志(我想要的):
Set {_storage: Array[1], length: 1, _batman: _Batman, constructor: function, isCollectionEventEmitter: true…}
_batman: _Batman
_storage: Array[1]
0: Array[15]
0: TaskEntry
1: TaskEntry
2: TaskEntry
3: TaskEntry
4: TaskEntry
5: TaskEntry
6: TaskEntry
7: TaskEntry
8: TaskEntry
9: TaskEntry
10: TaskEntry
11: TaskEntry
12: TaskEntry
13: TaskEntry
14: TaskEntry 主计长的控制台日志:
Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}任何帮助都是非常感谢的!
发布于 2014-07-19 16:09:16
不确定您是否在IRC中看到了bradstewart的回应,以防万一,这里又是这样:
Web.Inbox.get('task_entries')这个访问器会触发一个AJAX请求,但它是异步的。它不会返回您想要的值,因为该值仍然是从服务器加载的。正如布拉德指出的那样,访问器返回的是Batman.Request对象,而不是来自服务器的值。
您可以做的是让访问器返回一个Batman.Set,然后使用该访问器来触发一个Batman.Request,该Batman.Request将把记录加载到该集合中。当集合被更新时,您的视图也将被更新。例如:
@classAccessor 'task_entries', ->
@_entries = new Batman.Set
new Batman.Request
url: "/inbox"
method: "GET"
success: (data) =>
records = Web.TaskEntry.createMultipleFromJSON(data)
@_entries.add(records...) # if you're on master branch, you could use `@_entries.addArray(records)`
return @_entries 这将导致访问器返回一个集合,该集合一开始是空的,但是集合将由Batman.Request填充,您的视图将被更新。
(哎呀,交叉贴在要旨上)
https://stackoverflow.com/questions/24836658
复制相似问题