我试图慢慢将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的信息。提前谢谢!
答案 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页面中)或自定义机制,以确保根据需要获取模板在之前使用视图。前者将更容易,但可行性取决于您拥有多少模板以及它们有多大。