Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干:渲染嵌套视图_Javascript_Backbone.js_Coffeescript - Fatal编程技术网

Javascript 主干:渲染嵌套视图

Javascript 主干:渲染嵌套视图,javascript,backbone.js,coffeescript,Javascript,Backbone.js,Coffeescript,我第一次使用主干网,我正在尝试解决如何在视图中渲染视图。我的父视图完美地显示在页面上,我似乎无法在中呈现嵌套视图 我的父视图如下所示: 查看/项目发布项目。咖啡 define ['jquery', 'underscore', 'backbone', 'templates', 'views/shared/project_post_item'], ($, _, Backbone, JST, ProjectPostItemView) -> class ProjectPostItemsView

我第一次使用主干网,我正在尝试解决如何在视图中渲染视图。我的父视图完美地显示在页面上,我似乎无法在
中呈现嵌套视图

我的父视图如下所示:

查看/项目发布项目。咖啡

define ['jquery', 'underscore', 'backbone', 'templates', 'views/shared/project_post_item'],
($, _, Backbone, JST, ProjectPostItemView) ->
  class ProjectPostItemsView extends Backbone.View
    template: JST['app/scripts/templates/charity/project_post_items.ejs']
    posts_item_views: []

    initialize: ->
      super()

      @listenTo @model, 'change', @render
      if @model.dirty()
        @model.fetch()
      else
        @render()

      @listenTo(@collection, 'add', @displayPostItem)
      @collection.reset().fetch(add: true)

    displayPostItem: (project) ->
      view = new ProjectPostItemView(model: project)
      @posts_item_views.push( view.on('render', =>
        @$('#activity-feed').append(view.$('>'))) )

    render: (options) ->
      super(options)
define ['jquery', 'underscore', 'backbone', 'templates', 'models/project_post_item'],
($, _, Backbone, JST, ProjectPostItemModel) ->
  class ProjectPostItemView extends Backbone.View
    template: JST['app/scripts/templates/shared/project_post_item.ejs']

    initialize: (options) ->
      @main_view = options.main_view
      super()
      console.log "hello"
      @render

    render: =>
      super({}, 'html')
injectPageView: (sub_view, options={}) ->
  # clean and switch
  @current_page_view?.remove()
  # set up the new one
  @current_page_view = new sub_view(_.defaults(options, el: @$page_container, main_view: @))
  @side_menu_view.activate_item(_.result(@current_page_view, 'item_menu'))
  @listenTo(@current_page_view, 'url:fragment', (fragment) => @router.navigate("home/#{fragment}", trigger: false))
  @
posts: (project_id) ->
  @main_view.injectPageView( ProjectPostItemsView, model: @data.charity, collection: @data.charity.getProjectPostItems(project_id) )
我正在将我的帖子项目添加到我的收藏中,然后使用我的
displayPostItem()
函数创建一个新的
ProjectPostItemView
视图,并将这些项目推到我的
posts\u item\u view
数组中。最后,我将项目附加到id为
#activity feed
的元素

这是它链接到的模板:

模板/project\u post\u items.ejs

<h2>Latest Updates</h2>

<div id="activity-feed"></div>
<h1>Hello from the nested view</h1>
其模板如下所示:

模板/project\u post\u item.ejs

<h2>Latest Updates</h2>

<div id="activity-feed"></div>
<h1>Hello from the nested view</h1>
慈善事业•咖啡

define ['jquery', 'underscore', 'backbone', 'templates', 'views/shared/project_post_item'],
($, _, Backbone, JST, ProjectPostItemView) ->
  class ProjectPostItemsView extends Backbone.View
    template: JST['app/scripts/templates/charity/project_post_items.ejs']
    posts_item_views: []

    initialize: ->
      super()

      @listenTo @model, 'change', @render
      if @model.dirty()
        @model.fetch()
      else
        @render()

      @listenTo(@collection, 'add', @displayPostItem)
      @collection.reset().fetch(add: true)

    displayPostItem: (project) ->
      view = new ProjectPostItemView(model: project)
      @posts_item_views.push( view.on('render', =>
        @$('#activity-feed').append(view.$('>'))) )

    render: (options) ->
      super(options)
define ['jquery', 'underscore', 'backbone', 'templates', 'models/project_post_item'],
($, _, Backbone, JST, ProjectPostItemModel) ->
  class ProjectPostItemView extends Backbone.View
    template: JST['app/scripts/templates/shared/project_post_item.ejs']

    initialize: (options) ->
      @main_view = options.main_view
      super()
      console.log "hello"
      @render

    render: =>
      super({}, 'html')
injectPageView: (sub_view, options={}) ->
  # clean and switch
  @current_page_view?.remove()
  # set up the new one
  @current_page_view = new sub_view(_.defaults(options, el: @$page_container, main_view: @))
  @side_menu_view.activate_item(_.result(@current_page_view, 'item_menu'))
  @listenTo(@current_page_view, 'url:fragment', (fragment) => @router.navigate("home/#{fragment}", trigger: false))
  @
posts: (project_id) ->
  @main_view.injectPageView( ProjectPostItemsView, model: @data.charity, collection: @data.charity.getProjectPostItems(project_id) )

我不确定,但首先,在我看来,您在第一次
define
通话中遇到了问题。看起来
ProjectView
不属于该视图。您希望如何呈现子视图?这是一个输入错误。删除了原始代码,因此出现了错误。修复了输入错误@Amit@muistooshort抱歉,你能详细解释一下吗?