1

嗨,如果我想在我的 zend 应用程序中创建一个主干应用程序/资产文件夹,我最有可能将它放在哪里?骨干应用程序文件夹包括Javascript,Stylesheets and Templates

简而言之,这就是骨干如何与导轨一起使用

routes.rb

  resources :entries  

用于条目/索引的 Rails 控制器

class EntriesController < ApplicationController
    respond_to :json

    def index
        respond_with Entry.all
    end
end

使用这些代码,如果 url 位于 /entries,则可以简单地理解主干集合

class Blog.Collections.Entries extends Backbone.Collection
    url: '/entries'

在骨干路由器

class Blog.Routers.Entries extends Backbone.Router
  routes:
    '': 'index'
    'entries/:id': 'show'

  initialize: ->
    @collection = new Blog.Collections.Entries()
    @collection.fetch()

  index: ->
    view = new Blog.Views.EntriesIndex(collection: @collection)
    #alert 'hi'
    $('#container').html(view.render().el)
  show: (id) ->
    alert "Entry #{id}"

然后渲染到Backbone.View

class Blog.Views.EntriesIndex extends Backbone.View

    template: JST['entries/index']

    initialize: ->
        @collection.on('reset',@render,this)
    render: ->

        $(@el).html(@template(entries: @collection))
        this

渲染 assets/templates/entries/index.jst.eco 的模板

<h1>Blog</h1>

<ul>
<% for entry in @entries.models: %>
    <li><%= entry.get('name')%></li>
<% end %>
</ul>

最后使用 assets/javascripts/blog.js.coffee 初始化应用程序

window.Blog =
  Models: {}
  Collections: {}
  Routers: {}
  Views: {}
  initialize: -> 
    new Blog.Routers.Entries()
    Backbone.history.start()

$(document).ready ->
    Blog.initialize()

上面 Backbone.js 的 MVC 模式很有趣,但是我想用 Zend Framework 来实现,所以我必须改变什么配置才能像我们在 rails 中使用它一样使用它。还有我们如何处理模板来渲染视图?谢谢

4

1 回答 1

0

您可以将 Backbone 应用程序放在您的公共文件夹中(所有 CSS 和 Javascript 文件都在其中)。

对于模板,您可以使用您喜欢的模板引擎,我使用下划线来避免包含另一个库。这方面的一个例子是:

window.product_v = Backbone.View.extend({
    template: _.template("<article><img src='<%=icon%>'/> <% } %><article>"),

    render: function () {
        var self = this;
        this.model.fetch({
            processData: true,
            success: function (m) {
                var prod = $("<div/>", {
                        'html': self.template(m.toJSON())
                }).appendTo('.content');

            }
        });
    }
});

window.product_m = Backbone.Model.extend({
    urlRoot: '/api/get_product'
});

在您的模型中,您将在“urlRoot”中定义您的数据源,您可以在其中引用您的 Zend 控制器之一的路径。

于 2012-11-13T17:50:03.773 回答