Vueオブジェクトからロードされたオプションでselectタグをレンダリングしようとしていますが、これがレンダリングされる方法でわかるように、Vue.jsが動的にロードされた選択タグオプションを正しくレンダリングしない
さて、これはselectタグのマークアップです:
<div class="form-group ui-model">
@Html.LabelFor(m => m.SenderWalletId, new { @class = "control-label col-sm-2" })
<div class="col-sm-10">
<select class="form-control" v-model="selectedSenderWallet">
<option v-if="!walletsLoaded" disabled>Loading wallets...</option>
<option v-if="walletsLoaded" v-for="wallet in wallets" v-bind:value="wallet.id">{{ wallet.description }}</option>
</select>
@Html.HiddenFor(m => m.SenderWalletId, new { }, new { value = "selectedSenderWallet" })
@Html.ValidationMessageFor(m => m.SenderWalletId)
</div>
</div>
そして、これは(setWalletsがで呼び出されたSignalRが財布の世話をして一緒に、Vueのアプリを作成するためのスクリプトですハブを正常にロードした後のハブ私のリポジトリからllets):
<script>
var walletLinkText = Vue.extend({
props: ['wallet'],
template: '<span>{{ linkText }}</span>',
computed: {
linkText: function() {
return this.wallet.description + ' (' + this.wallet.currentAmountFormatted + ')';
}
}
});
var uiModel = new Vue({
el: '.ui-model',
data: {
wallets: [],
walletsLoaded: false
},
components: {
'wallet-link-text': walletLinkText
}
});
$(function() {
var walletsHubProxy = $.connection.walletsHub;
walletsHubProxy.client.updateWallet = function (...) {
...
};
walletsHubProxy.client.setWallets = function (currentWallets) {
uiModel.wallets = currentWallets;
uiModel.walletsLoaded = true;
};
$.connection.hub.start().done(function() {
walletsHubProxy.server.getWallets();
});
});
</script>
事は、私はあなたがメニューで見ることができるように財布が正しくロードされていると確信している:
そして、これがあります上記の場合のHTMLマークアップ:
だから私はどこが間違っていますか?私は本当にシンプルな何かにこだわっているように感じます。
問題の内容がわかりません。最後のスクリーンショットは、すべてが正常に動作していることを示しているようです。だから/最初のスクリーンショットの状況はどうなるの?一般に、Vueアプリケーションは、エラーがあり、Vueによってテンプレートがコンパイルされていない場合に、このように表示されます。あなたのコンソールを見てください。 –
問題は最初のスクリーンショットにあります。オプションはレンダリングされません。同じVueアプリでは、selectタグとは対照的にメニューが正しくレンダリングされるという事実をサポートするために、他のスクリーンショットを投稿しました。コンソールには何も表示されません(そして、私は開発版を使用しています)。 –
2番目のオプションで 'v-if =" walletsLoaded "の代わりに' v-else'を使用してみてください。 – Saurabh