将Angular html模板传递给骨干模板

时间:2014-06-25 14:25:30

标签: angularjs templates backbone.js typescript marionette

我试图慢慢将Backbone App转换为Angular。它实际上使用Marionette是准确的。在我目前的每一个Marionette视图中,它们都是Marionette.ItemView。要显示模板,我这样做:

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

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

我想知道如何在没有在主干或木偶应用程序中调用_.template的情况下传递我的template.html?所以在我的骨干视图或marionette.itemview的某处,我可以做到

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

有没有人碰到过这个?我无法找到很多关于人们如何将他们的应用程序从Backbone或Marionette转换为Angular的信息。提前谢谢!

3 个答案:

答案 0 :(得分:0)

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

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

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

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

上的文档

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

有一个名为Marionette.Async的旧分支,它可以按需获取模板,但是在维护者确定它是一个真正糟糕的主意之后很久就被抛弃了。

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

相关问题