最近、ループ内にVueコンポーネントを作成するときにワイヤの問題が発生しました。ループ内にダイナマイトVueコンポーネントを作成する
for(let i=0;i<testInfo.length;i++)
{
$("#home").append("<lib_" + testInfo[i]['lib_id'] + "></lib_" + testInfo[i]['lib_id'] + ">");
console.log(i);
Vue.component('lib_' + testInfo[i]['lib_id'], {
template: '#' + testInfo[i]['lib_id'],
created: function() {
this.count=i;
this.libTitle=testInfo[i]['lib_title'];
this.row=testInfo[i]['row'];
this.imgUrl=testInfo[i]['img_url'];
alert(i);
this.itemUrl=testInfo[i]['item_url'];
this.libNum=testInfo[i]['lib_num'];
this.libNumMax=testInfo[i]['lib_num_max'];
},
data: function(){
}
});
}
new Vue({
el: '#home'
});
にconsole.log(i)の結果:0 2 2有線である:ただし、アラート(i)の結果は 正常0 1 2。
最初はループでクロージャを作成することに関連して問題があると思ったので、「var i」を「let let」に変更しましたが、動作しません。
そして、私は
for(let i=0;i<testInfo.length;i++)
{
$("#home").append("<lib_" + testInfo[i]['lib_id'] + "></lib_" + testInfo[i]['lib_id'] + ">");
console.log(i);
Vue.component('lib_' + testInfo[i]['lib_id'], {
template: '#' + testInfo[i]['lib_id'],
created: function() {
this.count=i;
this.libTitle=testInfo[i]['lib_title'];
this.row=testInfo[i]['row'];
this.imgUrl=testInfo[i]['img_url'];
alert(i);
this.itemUrl=testInfo[i]['item_url'];
this.libNum=testInfo[i]['lib_num'];
this.libNumMax=testInfo[i]['lib_num_max'];
}(i),
data: function(){
}
});
} new Vue({
el: '#home'
});
を以下のように私のコードを変更する今、アラート(I)結果が正しい:0 1 2
しかし、 "ウィンドウオブジェクト" に "この" キーワードREFERE新しいvueオブジェクトではなく、新しいvueオブジェクトです。
この問題は私を狂ってしまう...助けてください。
としてそれを追加する必要があり、あなたの迅速な応答をありがとうございました。私はVuejsの初心者です。私がしたいのは、サーバーからのデータに従って、異なるタグをダイナミックに接続することです。私のコードから見ることができるように、まず、(サーバーのデータに応じて)新しいタグを作成し、それらのタグに異なるテンプレートを登録します。具体的には、データベースの各行がタグに対応するようにします。そのタグを持つテンプレートの登録は、行の値によって異なります。 vuejsでこれを行うことは可能でしょうか?はいの場合は、どのようなvueの機能(またはチュートリアル)を提案しますか?ありがとうございました。 –
は、ページにあらかじめ定義された限られた数のテンプレート( ''# '+ testInfo [i] [' lib_id '] ')であるか、サーバーから動的に定義します。テンプレートの種類? 私はVueの ''要素を含むソリューションについて考えていますが、これはテンプレートを前もって定義する必要があります。 –
返信いただきありがとうございます。テンプレートは限られた数で、ページにあらかじめ定義されています。データ内のオブジェクトを返すあなたの解決策は、本当にwoksです^^。しかし、私は別の有線の問題を遭遇しました: 'testInfo [i] ['lib_id']'の型がデータベースで定義されている 'double'であるとき、" Uncaught SyntaxError:Unexpected number "というエラーが発生します。そして、 'testInfo [i] ['lib_id']'を文字列に変換して '' lib_ '+ testInfo [i] [' lib_id '] 'に追加しようとしましたが、まだ同じエラーがあります。 'testInfo [i] ['lib_id']'の型が 'int'の場合、すべて正常に動作します。どんな助け?ありがとうございました –