【问题标题】:Backbone template : call a method in a template from a misc javascript file骨干模板:从其他 javascript 文件调用模板中的方法
【发布时间】:2014-03-25 09:01:30
【问题描述】:

在我的主干应用程序中,我有多个视图/模板/模型。

在我的一些模板中,我想从特定文件中调用一些函数:favouriteManager.js

我知道我可以使用<% %> 调用函数。但是当我按预期尝试像<% if (favouriteManager.hasFavouriteOne()) {} %> 这样的事情时,我得到一个错误:favouriteManager is not defined

那么我该如何定义它,以便在加载模板主干时也知道在哪里可以找到这个 javascript 文件。

我已经尝试在使用此模板的视图中定义它,但它不起作用。

编辑:我正在使用 RequireJS。

【问题讨论】:

    标签: javascript templates backbone.js marionette


    【解决方案1】:

    如果您不使用任何模块管理工具,例如 requirejs 或 commonjs 并且您的 favouriteManager.js 只需将 favouriteManager 变量添加到全局上下文(到 window),您只需在带有视图的脚本之前添加脚本标签代码。

    更新:

    如果您使用 RequireJs,您可以使用 templateHelpers 并将您的模块附加到它的视图中。所以你的代码看起来像:

    define(['marionette', 'favouriteManager', 'text!templates/myView.tpl'],
    function(Marionette, favouriteManager, myViewTpl) {
      return Marionette.ItemView.extend({
        template: myViewTpl,
        templateHelpers: {
          favouriteManager: favouriteManager
        }
      });
    });
    

    【讨论】:

    • 不幸的是,我正在使用 RequireJS。
    • 这样做我仍然得到favouriteManager is not defined
    猜你喜欢
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 2013-04-20
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多