1

我对使用项目/复合视图访问模型属性有一点问题。在我的 ItemView 中,我拥有所有模型属性数据,但是当我想<%=username%>在我的 html/模板中输出任何内容时。

我不知道为什么这不起作用。通常代码和我的一样简单。

要点:https ://gist.github.com/e6e68b525468606bd039或以下:

索引.html:

<section>
  <%= test %>
  <ul class="thumbnails" id='userslist'></ul>
</section>

<script type="text/template" id="usertemplate">
  Username: <%= username %>
</script>

测试咖啡:

define [ 'jquery', 'underscore', 'backbone', 'marionette', 'text!templates/us/index.html' ], ( $, _, Backbone, Marionette, TPL) ->

    class UserView extends Backbone.Marionette.ItemView
        template  : '#usertemplate'
        tagName   : 'li'
        className : 'span2'

        initialize: ->
            console.log 'm:', @model.attributes

    class UsPageView extends Backbone.Marionette.CompositeView
        template : _.template TPL
        itemView : UserView

        itemViewContainer: "#userslist"

        initialize: (options) ->
            @collection = options.collection
            @collection.fetch()

        appendHtml: (cView, iView, idx) ->
            cView.$(@itemViewContainer).append iView.el

        serializeData: ->
            test: 'ok'

    UsPageView

console.log 打印:Object { username: "Foo" }

4

1 回答 1

0

我找到了一个临时解决方案: - 我用我的模板代码创建了一个新文件:

  // --- members.html
  Username: <%= username %>

我像这样更改了我的 ItemView 类:

define [ 'jquery', 'underscore', 'backbone', 'marionette', 'text!templates/us/index.html', 'text!templates/us/members.html' ], ( $, _, Backbone, Marionette, TPL, M) ->

    class UserView extends Backbone.Marionette.ItemView
        tagName   : 'li'
        className : 'span2'

        template: (serializedModel) =>
            _.template M, @model.toJSON()

    class UsPageView extends Backbone.Marionette.CompositeView
        template          : _.template TPL
        itemView          : UserView    
        itemViewContainer : "#userslist"

        initialize: (options) ->
            @collection = options.collection
            @collection.fetch()

        appendHtml: (cView, iView, idx) ->
            cView.$(@itemViewContainer).append iView.el

    UsPageView

这个解决方案对我有用。对于我最初的问题,似乎是当我想恢复我的模板原始文本时。通常 $('#usertemplate').text() 返回带有所有 '<%= ... %>' 但没有的模板数据。我不知道为什么。

如果有人找到我仍然感兴趣的解决方案:)

于 2013-01-28T21:57:45.527 回答