我有一个视图,需要针对不同模型的不同模板。
我正在实施支付提供商配置,它需要为不同的支付提供商提供一组不同的选项。
这是我现在在我的视图代码中的内容:
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 时没有加载 @model。