2017-08-30 5 views
0

私はブートストラップポップオーバーでレンダリングしようとしているテンプレートを持っていますが、下のコードを実行すると[object Object]がレンダリングされます。何とか完全なテンプレートをレンダリングすることは可能ですか?属性内にテンプレートをレンダリングする

<a data-toggle="popover" data-placement="top" data-trigger="hover" title="sometitle" data-bind="attr: { 'data-content': { template: { name: 'a-template', data: somedata} } }"></a> 

あなたのセイジアドバイスとより良い知恵に感謝します!

答えて

1

あなたができることは、テンプレートを計算フィールドにレンダリングし、そのフィールドをそのデータコンテンツ属性に割り当てることです。以下を参照してください:

<script id="myTemplate" type="text/html"> 
     // Some HTML here 
</script> 

は、上記の指定されたテンプレートに基づいて計算されたフィールドを生成するテンプレートを指定します。

<script> 
function myViewModel() { 
    var self = this; 
    self.templateField= ko.computed(function(){ 
     var temp = $("<div>"); 
     ko.applyBindingsToNode(temp[0], { template: { name: 'templateName', data: self } }); 
     var html = temp.html(); 
     temp.remove(); 
     return html; 
    }, self); 
} 
</script> 

ここで、上記の属性で作成された計算フィールドを使用します。

<anyElement data-bind="attr: {'data-content': templateField}"/> 
+0

私はこのために自分のヘルパーを書いたが、この回答はおそらくうまくいくので、私はそれを受け入れた。 :) とにかくありがとう。 – Ms01

関連する問題