【问题标题】:Pass Angular html template to backbone template将 Angular html 模板传递给主干模板
【发布时间】:2014-06-25 14:25:29
【问题描述】:

我正在尝试将 Backbone 应用程序慢慢转换为 Angular。准确地说,它实际上是在使用 Marionette。在我当前的每个 Marionette 视图中,它们都是 Marionette.ItemView。为了显示模板,我这样做:

    get template() {
        return _.template(nameOfMyTemplate, { myModel: this.model });
    }

nameOfMyTemplate 将是我的 AwesomeTemplate.template.html 文件,它在我的解决方案中。

我想知道如何只传递我的 template.html 而无需在骨干网或木偶应用程序中调用 _.template?所以在我的主干视图或 marionette.itemview 的某个地方,我可以做

template: NewAwesomeAngularTemplate.template.html // where NewAwesomeAngularTemplate.template.html is a file in my solution

有人遇到过这个吗?我找不到太多关于人们如何将他们的应用程序从 Backbone 或 Marionette 转换为 Angular 的信息。提前致谢!

【问题讨论】:

    标签: angularjs templates backbone.js typescript marionette


    【解决方案1】:

    Marionette 期望所有模板立即可用,而不必异步获取。 view.template 函数可以很容易地被覆盖,但它需要立即返回一个字符串(或返回一个将立即返回一个字符串的函数)。

    有一个名为 Marionette.Async 的旧分支,它支持按需获取模板,但在维护人员确定它是一个非常糟糕的想法后,它很久以前就被放弃了。

    最好的办法是构建一种机制,将所有模板预先加载到内存中(例如将它们嵌入到单个 JS 文件或主 HTML 页面中),或者构建一种确保按需获取模板的自定义机制 before视图被使用。前者会容易得多,但可行性取决于您拥有多少模板以及它们有多大。

    【讨论】:

      【解决方案2】:

      对Backbone或Marionette不太熟悉,但走过去看了看网站。

      我不确定这是否是您要问的,如果我离题了,请原谅。在 Angular 中,您可以使用 ngRouter 或更强大的 uiRouter 将您的 url 绑定到控制器和视图。

      state('index', {
        url: "/",
        controller: 'SomeController',
        templateUrl: "template/NewAwesomeAngularTemplate.html"
      })
      

      不确定这是否是您要查找的内容。如果是这样,请查看https://github.com/angular-ui/ui-router的文档

      【讨论】:

        【解决方案3】:

        您可以使用 grunt ts html2ts 支持:https://github.com/grunt-ts/grunt-ts#html-2-typescript-support

        它将 html 文件转换为 typescript 字符串变量,您可以从模板函数中返回该变量。

        【讨论】:

        • 这似乎不相关
        猜你喜欢
        • 2015-08-05
        • 2016-06-16
        • 2017-12-29
        • 1970-01-01
        • 1970-01-01
        • 2022-11-14
        • 2017-12-25
        • 2019-02-15
        • 2017-09-23
        相关资源
        最近更新 更多