我有一个视图,需要不同模型的不同模板。
我实施了支付服务提供商配置,并且需要为不同的支付提供商提供不同的选项。
以下是我在视图代码中的内容:
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())
但我无法弄清楚如何正确地写它。
更新
后者确实是正确的,问题是在调用渲染时没有加载@model。
答案 0 :(得分:0)
你的CoffeeScript语法似乎很好。
您的第一个(工作)示例与另外两个示例之间的区别在于,在第一个代码示例中,在计算类时访问JST
对象,而在后两个示例中仅在视图为渲染。
JST对象的状态是否在两者之间发生了变化,以便在渲染时不再出现模板?