2015-04-27 70 views
0

我有一個div,看起來像這樣的HTML模板:如何訪問使用JavaScript注入HTML模板的值?

<div id="some_{{model.property}}_{{other.value}}_text"></div> 

我想使用JavaScript在我的骨幹,以便動態地格式化這些注入值,這樣的ID沒有空格和斜線等問題是我不知道正確的語法來抓取它們。現在我這樣做:

var unformatted = "some_{{model.property}}_{{other.value}}_text" 

,然後使用jQuery來的ID設置爲格式化值:

$('.common-class').attr('id', unformatted.formatMe()); 

當然的,讓我用大括號的字符串值和數據的路徑。我怎樣才能達到的價值觀呢?我在後端使用主幹,牽線木偶,require,bootstrap和Spring。非常感謝!

+0

您需要在注入值之前執行此操作,並嘗試將無效標記的片段添加到DOM。現在要做到這一點已經太遲了,你不能通過一個帶有空格的ID來查詢元素,因爲它首先不是一個有效的ID。在Backbone中,您可以在模型的渲染方法中執行此操作。除非您向我們展示您的「渲染」,否則我們無法真正告訴您更多。 – meagar

+0

而不是試圖將數據填充到id字段以便稍後解析出來,請使用其他字段,如數據字段。

然後使用$('。common-class')。data('whatevermodelproperty')和$('。common-class')。data('othervalueproperty')來訪問它們 – Taplar

+0

實際上它是在onrender函數中,這些變化。我從頭開始,儘管我現在所擁有的正是我上面寫的。我是否需要在onrender函數的範圍內設置這些值? – kurofune

回答

0

@meagar是正確的。您應該在呈現模板之前創建所需的屬性。該模板應引用新值而不是原始模型屬性。

<div id="{{newValue}}"></div> 

如果,例如,你想修改或改變someProperty,使其呈現爲newValue,你可以簡單地添加newValue作爲一個額外的模型屬性。

render: function() { 
    this.model.set('newValue', computeNewValue(someProperty)); 
    this.$el.html(this.template(this.model.toJSON())) 
} 

如果你不想newValue屬性污染你的模型,你可以簡單地把它添加到傳遞給模板對象:

render: function() { 
    this.$el.html(this.template(
     _(this.model.toJSON()).extend({ 
      newValue: computeNewValue(someProperty) 
     }) 
    )); 
} 

在後一種情況下,模型本身ISN」 t修改,但模板能夠訪問計算值。