我希望 JavaScript 与我的 Backbone 模板紧密集成,并且作为视图引用要使用的模板,我相信这将是存储 JavaScript 的最佳位置,对吧?但是怎么做?
特别是,我有 JavaScript 在视图呈现并准备好(不是事件)时设置 DOM。我最初在模板中设置了这个脚本,但这只是在首次加载应用程序时触发,当您通过 Backbone 的路由器导航回视图时,没有触发 JavaScript。
我希望 JavaScript 与我的 Backbone 模板紧密集成,并且作为视图引用要使用的模板,我相信这将是存储 JavaScript 的最佳位置,对吧?但是怎么做?
特别是,我有 JavaScript 在视图呈现并准备好(不是事件)时设置 DOM。我最初在模板中设置了这个脚本,但这只是在首次加载应用程序时触发,当您通过 Backbone 的路由器导航回视图时,没有触发 JavaScript。
模板并不意味着存储您的 JavaScript - 它们应该是由您的视图呈现的愚蠢的 html 模板。
当您从视图加载模板时,该视图需要与所有将与您的应用程序交互的 DOM 元素绑定。
如果您的视图只有到 DOM 的绑定,这是一种很好的做法,因此它可以触发内部事件。
然后,您可以创建“控制器”来监听您的视图实例并与之交互,触发方法以在 DOM 中进行一些更改,或者准备集合和模型以供您的视图使用。
但是,您可以使用许多其他库来组织代码逻辑加载。
我喜欢requirejs,但是commonjs有很多有用的选项。
将 JavaScript 放入模板中就像将其与 HTML 混合在一起。这不是一个好主意,因为您将逻辑与结构混合在一起,并且您的应用程序一旦增长就会变得难以维护。
我用 MVC 风格组织我的代码,这使得开发和测试大型应用程序变得简单。例如,如果我想要模型/集合,它们位于 MODEL/COLLECTION 文件夹中,CONTROLLER 文件夹将保留我的应用程序的逻辑部分,VIEW 文件夹将保留与 DOM 交互的文件,就像 Django 我添加了一个模板模板的文件夹,尽可能简单。
只是为了解释你的问题:
当您使用脚本加载模板时,您将执行该脚本。在此之后,您的模板将被存储在内存中,这意味着您的脚本将永远不会再次被触发。你可以修复它,但你会做错事。通过在 Backbone 中绑定视图渲染方法,可以在渲染之后触发您的脚本。