1

我正在使用带有一些附加库(sinon、selenium、chai 和 mocha)的 brunch-with-chaplinjs 样板。现在我想将模型从视图(确切地说是集合视图)传递给另一个控制器进行编辑。

我可以这样做:

Chaplin.utils.redirectTo 'editaddress', model:@model

但这使我的网址变得混乱:

localhost:8080/editaddress?model=%5Bobject%20Object%5D

我似乎找不到任何可接受的方法来保持 url 干净并且仍然将整个模型传递给另一个控制器而不从服务器重新获取模型。

4

1 回答 1

1

通常你会使用卓别林的作曲家,但这只是为了重用视图。

您仍然可以这样做,但需要使用堆栈。

在其中创建一个堆栈,application.coffee您可以在更改控制器时存储项目。

# This is hidden from all other files so it is save, if you don't use any AMD,
# you should place this inside the application object.
stack = []    

module.exports = class Application extends Chaplin.Application

  ### Your program here ###

  start: ->

    # Other code here

    Mediator.setHandler 'push', @push
    Mediator.setHandler 'pop', @pop

  ###
  # Push to temporary storage stack.
  ###
  push: (item)->
    push item

  ###
  # Pop form temporary storage stack.
  ###
  pop: ->
    return stack.pop()

现在您可以从代码中的任何位置推送到您的堆栈,如下所示:

Mediator.execute 'push', @model

并检索您可以使用:

Mediator.execute 'pop'
于 2014-10-24T09:07:52.087 回答