首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Batman.js中发出返回请求结果的问题

在Batman.js中发出返回请求结果的问题
EN

Stack Overflow用户
提问于 2014-07-19 04:11:48
回答 1查看 44关注 0票数 0

我在返回Batman.Request调用的结果时遇到了问题。我已经对我称之为回归的地区进行了评论。我很确定我不能只打电话到那里,但我似乎找不到任何文件可以指向正确的方向。

型号:

代码语言:javascript
复制
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()

主计长:

代码语言:javascript
复制
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

来自模型的控制台日志(我想要的):

代码语言:javascript
复制
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 

主计长的控制台日志:

代码语言:javascript
复制
Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-19 16:09:16

不确定您是否在IRC中看到了bradstewart的回应,以防万一,这里又是这样:

代码语言:javascript
复制
Web.Inbox.get('task_entries')

这个访问器会触发一个AJAX请求,但它是异步的。它不会返回您想要的值,因为该值仍然是从服务器加载的。正如布拉德指出的那样,访问器返回的是Batman.Request对象,而不是来自服务器的值。

您可以做的是让访问器返回一个Batman.Set,然后使用该访问器来触发一个Batman.Request,该Batman.Request将把记录加载到该集合中。当集合被更新时,您的视图也将被更新。例如:

代码语言:javascript
复制
  @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填充,您的视图将被更新。

(哎呀,交叉贴在要旨上)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24836658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档