对于不同的模型,我有一个需要不同模板的视图。
我正在实现一个支付提供者配置,它需要为不同的支付提供者提供一组不同的选项。
下面是我现在视图代码中的内容:
robokassa: JST["payment_providers/robokassa"]
cash: JST["payment_providers/cash"]
render: =>
template_name = @model.get('name')
switch template_name
when "robokassa" then $(@el).html(@robokassa(payment_provider: @model))
when "cash" then $(@el).html(@cash(payment_provider: @model)) 很管用,但很难看。
我尝试过这样的方法,但是除了简单的用例之外,我找不到关于如何使用JST对象的最终手册:
render: =>
template_name = @model.get('name')
$(@el).html(JST["payment_providers/#{template_name}"](payment_provider: @model)这会返回一个错误,说明它不是一个函数。
我想,理想情况下,解决方案应该是
template: =>
JST["payment_providers/#{@model.get('name')}"](payment_provider: @model)
...
render: =>
$(@el).html(@template())但我想不出怎么把它写好。
更新
后者确实是正确的,缺点是@模型在调用render时没有加载。
发布于 2012-12-18 15:58:54
在我看来,您的CoffeeScript语法很好。
第一个(工作的)示例与另外两个示例的区别是,在第一个代码示例中,类被计算时访问JST对象,而在后两个示例中,只有在呈现视图时才访问该对象。
JST对象的状态是否在两种状态之间发生了变化,使模板在呈现时不再存在?
https://stackoverflow.com/questions/13936485
复制相似问题