我有一个使用Backbone的Ruby on Rails应用程序。在咖啡中,我有:
class App.Views.TableElement extends Backbone.View
events:
"change input[name='past_results']": "togglePastResults",
"change .cohort_toggle select": "selectCohort"
initialize: (options) ->
@listenTo(@model, "change", @render)
render: =>
console.log @model.toJSON()
@$el.empty().append(HandlebarsTemplates['shared/table_element'](@model.toJSON(), data: { tableClass: @tableClass() }))
@$el.find('.cohort_toggle select').val(@model.get("selectedCohortLabel"))
@$el
我认为这是相关的。
我不会展示整个model.toJSON输出,但是它具有标题和行,就像表格一样。行之一中的元素之一应该是链接。最终,我认为这将是指向我认为的javascript的链接,但就目前而言,我只想链接至google以进行测试...因此,我将元素硬编码为'<a href="https://google.com">Visit google</a>'
,但是,{ {1}}和其他内容,因此HTML才是表格中实际显示的内容。
问题是:谁在逃避我的HTML,如何停止它?
模型(部分):
<
模板。所有这些都是因为我不确定它的作用是什么...所以它有模型摘录所没有的列:
class App.Table extends Backbone.Model
defaults: {
showPastResults: true
}
initialize: ->
@set("selectedCohortLabel", @get("cohortLabels")[0])
columns: =>
columns = []
Array::push.apply columns, [@get('categories')]
Array::push.apply columns, @get('currentData')
Array::push.apply columns, [['<a href="https://google.com">Visit google</a>', 5, 5]] if @get('haveDataBytes')
columns
答案 0 :(得分:1)
来自fine manual:
HTML转义
把手{{expression}}
返回的HTML转义值。如果您不希望手把转义一个值,请使用“三重隐藏”{{{
。
大概您的columns
数据进入某个地方的模型的toJSON
返回值中。您的模板需要某种方式来知道何时处理链接,以便它可以说{{{link}}}
而不是{{link}}
来防止{{...}}
逃脱HTML。
此外,您可以这样编写columns
方法:
columns: ->
columns = [ @get('categories'), @get('currentData')... ]
if @get('haveDataBytes')
columns.push ['<a href="https://google.com">Visit google</a>', 5, 5]
columns
避免使用Array
的原型的奇怪和非惯用性。