当我修改html内容时,Marionette(Backbone)只渲染新内容

时间:2017-07-18 21:30:03

标签: javascript ruby-on-rails backbone.js marionette erb

Ruby on Rails / Backbone with Marionette app

当我尝试使用i18n(i18n-js Ruby gem)查看正确的语言时,我发现当我向layout-menu.jst.ejs.erb添加任何手动更改时,内容只是更改并向该区域添加正确的语言模板文件。

这就是我在menu-view.js.coffee

上的内容
@CitaManager.module "Layout", (Layout, CitaManager, Backbone, Marionette, $, _) ->
  Layout.MenuView = Marionette.ItemView.extend
    template: JST["marionette/mine/templates/layout-menu"]
    ui:
      btnAgenda: ".btn_agenda"
      btnNotes:  ".btn_notes"
      btnVideoconference:  ".btn_videoconference"
      btnIndicators:  ".btn_indicators"
      btnVademecum:  ".btn_vademecum"
    triggers:
      "click @ui.btnAgenda": "menu:agenda"
      "click @ui.btnNotes" : "menu:notes"
      "click @ui.btnVideoconference" : "menu:videoconference"
      "click @ui.btnIndicators" : "menu:indicators"
    events:
      "click .btn": "btnClicked"
      "click @ui.btnVademecum": "openVademecum"
    initialize: (options)->
      @isPremium = options.isPremium
      @isStandard = options.isStandard

    btnClicked: (event) ->
      $('li', $(event.target).closest('ul')).removeClass('active');
      $(event.target).closest('li').addClass('active');

    openVademecum: ->
      if this.isPremium
        window.open('http://www.vademecum.es/registrase_connect?urlBack=http%3A%2F%2Fwww.vademecum.es%2F', 'newwindow', 'width=400, height=400');
      else
        bootbox.alert('Lo sentimos, este servicio solo está disponible para los planes premium')
      return false

    onRender: ->
      console.log "Menu rendered"

我粘贴在模板上

<p>
    <%= I18n.locale %>
</p>

我重新加载页面导致更改,然后它说 es (西班牙语)谁在代码中写,当然,您可以查看西班牙语文本,但如果我将语言更改为“ en“(英语)它仍然在视图上显示 es ,但是如果我打开控制台并输入现在相同的内容:I18n.locale它说”en“

1 个答案:

答案 0 :(得分:0)

<强>解决!

问题在于文件名layout-menu.jst.ejs.erb,只需移除.erb即可。