lang
1 Vue.directive('test-directive', { 2 bind: function () { 3 this.el.innerHTML = "str:" + this.el.innerHTML; 4 } 5 }); 6 7 var vm = new Vue({ 8 el: '#app', 9 data: { 10 str: "Hello World!" 11 } 12 });
lang
1<div v-test-directive>{{str}}(this is literal)</div>
上記コードを書いたのですが、
私の理想では、
str: Hello World!(this is literal)
となってほしいのですが、現実は、
str: (this is literal)
となってしまいます。
lang
1 Vue.directive('test-directive', { 2 bind: function () { 3 //this.el.innerHTML = "str:" + this.el.innerHTML; #この行をコメントアウト 4 } 5 });
上記のようにコメントアウトして、bind内でinnerHTMLを操作しないようにした場合は、
Hello World!(this is literal)
とmustacheはきちんと展開されます。
(console.logで内容を見ると、innerHTMLとして取得する文字列に{{}}が入ってませんでした。その不完全な文字列でinnerHTMLを上書きするために{{}}が消えてしまうようです)
なんとかbindでinnerHTMLの内容を操作しつつ、
{{}}を展開できないでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/30 10:57