立即声明:不要将此问题视为真正的应用程序。一切都是为了自我教育和学习spine.js而完成的。
其次,我知道这种关系。我不想使用,因为世界比简单的关系更广泛。例如,一个页面包含您想要显示现在在线用户的文章,或者所有参与撰写文章的人。
想象一个普通的应用程序,它显示您可以创建,显示,编辑和删除的帖子列表。所有在spine.js上,一切正常。基于spine.rails3应用程序。 然后我添加了注释模型,其中包含字段post_id和body。并在veiw Show上添加了按钮评论。我想要的只是按下按钮评论来加载本文的评论。 我的评论.js.coffee:
class App.Comment extends Spine.Model
@configure 'Comment', 'post_id', 'body', 'created_at', 'updated_at'
@extend Spine.Model.Ajax
@fetch_comments: (id) =>
params =
data: {post_id: id}
url: '/comments/fetch'
processData: true
@ajax().fetch(params)
true
在Rails控制器中:
def fetch
@comments = Comment.where("post_id = ?", params[:post_id])
respond_with @comments
end
在Chrome控制台中一切正常:
App.Comment.fetch_comments(11)
App.Comment.all()
使用post_id = 11从服务器接收所有评论。
而我的问题是我不知道如何从控制器上做同样的事情帖子:-( 在我的posts.js.coffee中:
class Show extends Spine.Controller
events:
......
'click [data-type=show]': 'comments'
comments: ->
@log(@item.id)
new App.Comments(@item.id)
这里的问题....如何实现控制器App.Comments,所以从服务器加载需要注释? 现在我的控制器看起来像:
Comment = App.Comment
class Index extends Spine.Controller
constructor: (id)->
super
**App.Comment.fetch_comments(id)**
class App.Comments extends Spine.Stack
className: 'comments stack'
controllers:
index: Index
routes:
# '/comments/new': 'new'
'/comments/': 'index'
className: 'stack comments'
并且在选定的行上无效。我不知道该怎么做......
主要问题是如何使用特定参数从另一个控制器调用控制器,结果显示在主控制器中?
也许这是noob问题,但我希望得到你的帮助。 非常感谢提前。
答案 0 :(得分:0)
我发现你正在使用脊柱堆栈。堆栈在由堆栈管理的控制器中传递。所以在Index
内你可以使用@stack
访问父堆栈。