VueJs [Vue警告]:渲染错误:“ TypeError:无法读取未定义的属性'title'”

杰伊·斯内尔

我收到此错误,但在Search Console中我仅收到[Vue警告]:渲染错误:“ TypeError:无法读取未定义的属性'title'”

当我检查错误来自何行时,它仅突出显示正在初始化变量的第一行“ var shoppingCartApp = new Vue({”

有没有一种调试方法可以向我显示“标题”所在的行?

我收到此错误还有其他原因吗?

<style>
    * {
        margin: 0;
        padding: 0;
    }
    #shoppingCartApp {
        width: 100%;
        max-width: 800px;
        margin: auto;
    }
    button:hover {
        cursor: pointer;
        background: #B7053F !important;
    }
</style>

<div id="shoppingCartApp">

    <!-- First Page -->
    <div id="scPage-1">
        <div class="text-center">
            <h1>{{ mainTitle }}</h1>
        </div>
        <!-- Promo Code Section -->
        <div class="scPromoCode text-center">
            <input type="text" v-model="userPackageContent.promoCodeValue" /><button v-on:click="showPromoValue(userPackageContent.promoCodeValue)">Apply</button>
        </div>
        <!-- End Promo Code Section -->
        <br />
        <!-- Country Selection Section -->
        <div class="scCountries row text-center">
            <button class="usaButton col-sm" v-on:click="showUsaPrice()">USA</button>
            <button class="canButton col-sm" v-on:click="showCanPrice()">Canada</button>
            <select class="intButton col-sm" id="scCountryDropdown" name="country" v-on:click="showIntPrice()">
                <option value="International">International</option>
                <option value="Afganistan">Afghanistan</option>
                <option value="Albania">Albania</option>
                <option value="Algeria">Algeria</option>
            </select>
        </div>
        <!-- End Country Selection Section -->
        <br />
        <!-- Subscription Selection Section -->
        <div class="scJournalSelections row text-center">
            <div class="dailySubscription col-sm">
                <h2>{{ subscriptionInfo.dailySubcription.title }}</h2>
                <h2>${{ subscriptionInfo.dailySubcription.price }}</h2>
                <button v-on:click="getCurrentSubscriptionChoice($event)" value="Daily">Subscribe</button>
            </div>
            <div class="journalSubscription col-sm">
                <h2>{{ subscriptionInfo.journalSubcription.title }}</h2>
                <h2>${{ subscriptionInfo.journalSubcription.price }}</h2>
                <button v-on:click="getCurrentSubscriptionChoice($event)" value="Journal">Subscribe</button>
            </div>
            <div class="dualSubscription col-sm">
                <h2>{{ subscriptionInfo.dualSubcription.title }}</h2>
                <h2>${{ subscriptionInfo.dualSubcription.price }}</h2>
                <button v-on:click="getCurrentSubscriptionChoice($event)" value="Daily & Journal">Subscribe</button>
            </div>
        </div>
        <!-- End Subscription Selection Section -->
    </div>
    <!-- End First Page -->

    <div id="scPage-2" class="text-center">
        <h1>Login/Registration Page If Not Already Logged In</h1>
    </div>


    <div id="scPage-3" class="text-center">
        <h1>Delivery Address</h1>
    </div>

    <div id="scPage-4" class="text-center">
        <h1>Cart Details</h1>
        <div class="scPromoCode text-center">
            <input type="text" v-model="userPackageContent.promoCodeValue" /><button v-on:click="showPromoValue(userPackageContent.promoCodeValue)">Apply</button>
        </div>
        <p>Subscription: {{ userPackageContent.subscriptionChoiceTitle }}</p>
        <p>Promo Discount: {{ userPackageContent.promoDiscount }}</p>
    </div>

    <div id="scPage-5" class="text-center">
        <h1>Checkout</h1>
        <p>Total: ${{ userPackageContent.checkoutTotal }}</p>
        <p>Total: ${{ userPackageContent.salesTax }}</p>
    </div>

</div>







    <script>
        var shoppingCartApp = new Vue({
            el: '#shoppingCartApp',
            data: {
                mainTitle: 'Shopping Cart',
                //Promo Discount Information
                promoValidation: true,
                usaProps: {
                    promoCode: 'usa',
                    promoDiscount: 50,
                    subscriptionPrice: 2,
                    value: false
                },
                canProps: {
                    promoCode: 'can',
                    promoDiscount: 75,
                    subscriptionPrice: 4,
                    value: false
                },
                intProps: {
                    promoCode: 'int',
                    promoDiscount: 100,
                    subscriptionPrice: 6,
                    value: false
                },
                dualProps: {
                    promoCode: 'dual',
                    promoDiscount: 150,
                    subscriptionPrice: 8,
                    value: false
                },
                //Package Information
                subscriptionInfo: {
                    dailySubscription: {
                        price: 100,
                        title: 'Daily'
                    },
                    journalSubscription: {
                        price: 200,
                        title: 'Journal'
                    },
                    dualSubscription: {
                        price: 300,
                        title: 'Daily & Journal'
                    }
                },
                //User Checkout Information
                userPackageContent: {
                    subscriptionChoiceTitle: null,
                    subscriptionChoicePrice: null,
                    promoCodeValue: null,
                    promoDiscount: 0,
                    salesTax: 0,
                    checkoutTotal: null
                }

            },
            methods: {
                getCurrentSubscriptionChoice: function (e) {
                    var subscriptionValue = e.target.value;


                    if (subscriptionValue == this.subscriptionInfo.dailySubcription.title) {
                        this.userPackageContent.subscriptionChoiceTitle = this.subscriptionInfo.dailySubcription.title;
                        this.userPackageContent.subscriptionChoicePrice = this.subscriptionInfo.dailySubcription.price;
                        this.userPackageContent.checkoutTotal = this.userPackageContent.subscriptionChoicePrice;
                    }
                    if (subscriptionValue == this.subscriptionInfo.journalSubcription.title) {
                        this.userPackageContent.subscriptionChoiceTitle = this.subscriptionInfo.journalSubcription.title;
                        this.userPackageContent.subscriptionChoicePrice = this.subscriptionInfo.journalSubcription.price;
                        this.userPackageContent.checkoutTotal = this.userPackageContent.subscriptionChoicePrice;
                    }
                    if (subscriptionValue == this.subscriptionInfo.dualSubcription.title) {
                        this.userPackageContent.subscriptionChoiceTitle = this.subscriptionInfo.dualSubcription.title;
                        this.userPackageContent.subscriptionChoicePrice = this.subscriptionInfo.dualSubcription.price;
                        this.userPackageContent.checkoutTotal = this.userPackageContent.subscriptionChoicePrice;
                    }
                    console.log(this.userPackageContent.subscriptionChoiceTitle)
                    console.log(this.userPackageContent.subscriptionChoicePrice)

                },
                showCurrentCountrySelection: function () {
                    if (this.usaProps.value == true) {
                        $('.usaButton').css('background', 'rgba(171, 183, 183, 1)')
                    } else {
                        $('.usaButton').css('background', '#fff')
                    }
                    if (this.canProps.value == true) {
                        $('.canButton').css('background', 'rgba(171, 183, 183, 1)')
                    } else {
                        $('.canButton').css('background', '#fff')
                    }
                    if (this.intProps.value == true) {
                        $('.intButton').css('background', 'rgba(171, 183, 183, 1)')
                    } else {
                        $('.intButton').css('background', '#fff')
                    }
                },
                subscriptionChangePriceReset: function () {
                    this.subscriptionInfo.dailySubscription.price = 100;
                    this.subscriptionInfo.journalSubscription.price = 200;
                    this.subscriptionInfo.dualSubscription.price = 300;

                    this.promoValidation = true;
                },
                showPromoValue: function (value) {
                    if (value == "usa") {
                        if (this.usaProps.value == true && promoValidation) {
                            this.subscriptionInfo.dailySubscription.price = this.subscriptionInfo.dailySubscription.price - this.usaProps.promoDiscount;
                            this.subscriptionInfo.journalSubscription.price = this.subscriptionInfo.journalSubscription.price - this.usaProps.promoDiscount;
                            this.subscriptionInfo.dualSubscription.price = this.subscriptionInfo.dualSubscription.price - this.usaProps.promoDiscount;

                            this.promoValidation = false;
                        }
                    }
                    if (value == "can") {
                        if (this.canProps.value == true && promoValidation) {
                            this.subscriptionInfo.dailySubscription.price = this.subscriptionInfo.dailySubscription.price - this.canProps.promoDiscount;
                            this.subscriptionInfo.journalSubscription.price = this.subscriptionInfo.journalSubscription.price - this.canProps.promoDiscount;
                            this.subscriptionInfo.dualSubscription.price = this.subscriptionInfo.dualSubscription.price - this.canProps.promoDiscount;

                            this.promoValidation = false;
                        }
                    }
                    if (value == "int") {
                        if (this.int == true && promoValidation) {
                            this.subscriptionInfo.dailySubscription.price = this.subscriptionInfo.dailySubscription.price - this.intProps.promoDiscount;
                            this.subscriptionInfo.journalSubscription.price = this.subscriptionInfo.journalSubscription.price - this.intProps.promoDiscount;
                            this.subscriptionInfo.dualSubscription.price = this.subscriptionInfo.dualSubscription.price - this.intProps.promoDiscount;

                            this.promoValidation = false;
                        }
                    }
                },
                showUsaPrice: function () {
                    this.subscriptionChangePriceReset();
                    //Used to prevent promo code from constantly being applied
                    this.usaProps.value = true;
                    this.canProps.value = false;
                    this.intProps.value = false;

                    this.showCurrentCountrySelection();

                    this.subscriptionInfo.dailySubscription.price = this.subscriptionInfo.dailySubscription.price * this.usaProps.price; //API PRICE GOES HERE
                    this.subscriptionInfo.journalSubscription.price = this.subscriptionInfo.journalSubscription.price * this.usaProps.price; //API PRICE GOES HERE
                    this.subscriptionInfo.dualSubscription.price = this.subscriptionInfo.dualSubscription.price * this.usaProps.price; //API PRICE GOES HERE
                },
                showCanPrice: function () {
                    this.subscriptionChangePriceReset();
                    //Used to prevent promo code from constantly being applied
                    this.usaProps.value = false;
                    this.canProps.value = true;
                    this.intProps.value = false;

                    this.showCurrentCountrySelection();

                    this.subscriptionInfo.dailySubscription.price = this.subscriptionInfo.dailySubscription.price * this.canProps.price; //API PRICE GOES HERE
                    this.subscriptionInfo.journalSubscription.price = this.subscriptionInfo.journalSubscription.price * this.canProps.price; //API PRICE GOES HERE
                    this.subscriptionInfo.dualSubscription.price = this.subscriptionInfo.dualSubscription.price * this.canProps.price; //API PRICE GOES HERE
                },
                showIntPrice: function () {
                    this.subscriptionChangePriceReset();
                    //Used to prevent promo code from constantly being applied
                    this.usaProps.value = false;
                    this.canProps.value = false;
                    this.intProps.value = true;

                    this.showCurrentCountrySelection();

                    this.subscriptionInfo.dailySubscription.price = this.subscriptionInfo.dailySubscription.price * this.intProps.price; //API PRICE GOES HERE
                    this.subscriptionInfo.journalSubscription.price = this.subscriptionInfo.journalSubscription.price * this.intProps.price; //API PRICE GOES HERE
                    this.subscriptionInfo.dualSubscription.price = this.subscriptionInfo.dualSubscription.price * this.intProps.price; //API PRICE GOES HERE
                }
            }
        })

        console.log("Script running")
    </script>

母马96

您需要先检查数据,然后才能获得的深值title

所以尝试这样的事情:

if (subscriptionValue == this.subscriptionInfo &&
 this.subscriptionInfo.dailySubcription &&
 this.subscriptionInfo.dailySubcription.title)

另外,在您的组件中执行以下操作:

{{ subscriptionInfo.dailySubcription && subscriptionInfo.dailySubcription.title }}

只要在拥有深厚价值观的所有地方进行更改,这都应该起作用。

一些有用的链接:link-1link-2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法读取未定义的属性“ title”。表达

来自分类Dev

错误:无法读取未定义的属性

来自分类Dev

NodeJS错误“ TypeError:无法读取未定义的属性” stdout”

来自分类Dev

VueJS:未捕获(承诺)TypeError:无法读取未定义的属性“ push”

来自分类Dev

渲染中的Vuejs错误:“ TypeError:无法读取未定义的属性'props'” Vuejs

来自分类Dev

错误TypeError:无法读取未定义的属性“匹配”

来自分类Dev

TypeError:无法读取未定义反应命中的属性“ title”

来自分类Dev

渲染错误:“ TypeError:无法读取未定义的属性'名称'”(Vue)

来自分类Dev

错误TypeError:无法读取未定义的属性“句柄”

来自分类Dev

错误TypeError:无法读取未定义的属性'__source'

来自分类Dev

Axios在React中未定义,错误:Uncaught TypeError:无法读取未定义的属性“ post”

来自分类Dev

如何解决“无法读取未定义的属性'title'”?

来自分类Dev

错误TypeError:无法读取未定义的属性“调用”

来自分类Dev

错误TypeError:无法读取未定义的Angular Firebase的属性'title'

来自分类Dev

VueJS-无法读取未定义的属性“状态”

来自分类Dev

VueJS =未捕获的TypeError:无法读取未定义的属性“设置”

来自分类Dev

reactjs错误:TypeError:无法读取未定义的属性“ props”

来自分类Dev

[Vue警告]:渲染错误:“ TypeError:无法读取未定义的属性'correct_answer'”

来自分类Dev

vue.js | TypeError:无法读取未定义的属性“ then”

来自分类Dev

VueJS 3 + Laravel:未捕获的TypeError:无法读取未定义的属性“ component”

来自分类Dev

TypeError:无法读取VueJS上下文中未定义的属性“替换”

来自分类Dev

[Vue警告]:监视程序“ childItems”的回调错误:“ TypeError:无法读取未定义的属性'tag'

来自分类Dev

VueJS:未捕获(承诺)TypeError:无法读取未定义的属性“ rol”

来自分类Dev

(RSS Feed)未捕获的TypeError:无法读取未定义的属性“ title”

来自分类Dev

VueJS-有时会收到错误“未捕获的TypeError:无法读取未定义的属性'process'”

来自分类Dev

渲染函数中的错误:“TypeError:无法读取未定义的属性”,使用 Vuex 和 Vue Router

来自分类Dev

无法读取未定义的属性“on”?-> 错误

来自分类Dev

[Vue 警告]:渲染错误:“TypeError:无法读取未定义的属性‘BTC’”

来自分类Dev

vue.js:属性或方法“”未定义,渲染错误:“TypeError:无法读取未定义的属性''”

Related 相关文章

  1. 1

    无法读取未定义的属性“ title”。表达

  2. 2

    错误:无法读取未定义的属性

  3. 3

    NodeJS错误“ TypeError:无法读取未定义的属性” stdout”

  4. 4

    VueJS:未捕获(承诺)TypeError:无法读取未定义的属性“ push”

  5. 5

    渲染中的Vuejs错误:“ TypeError:无法读取未定义的属性'props'” Vuejs

  6. 6

    错误TypeError:无法读取未定义的属性“匹配”

  7. 7

    TypeError:无法读取未定义反应命中的属性“ title”

  8. 8

    渲染错误:“ TypeError:无法读取未定义的属性'名称'”(Vue)

  9. 9

    错误TypeError:无法读取未定义的属性“句柄”

  10. 10

    错误TypeError:无法读取未定义的属性'__source'

  11. 11

    Axios在React中未定义,错误:Uncaught TypeError:无法读取未定义的属性“ post”

  12. 12

    如何解决“无法读取未定义的属性'title'”?

  13. 13

    错误TypeError:无法读取未定义的属性“调用”

  14. 14

    错误TypeError:无法读取未定义的Angular Firebase的属性'title'

  15. 15

    VueJS-无法读取未定义的属性“状态”

  16. 16

    VueJS =未捕获的TypeError:无法读取未定义的属性“设置”

  17. 17

    reactjs错误:TypeError:无法读取未定义的属性“ props”

  18. 18

    [Vue警告]:渲染错误:“ TypeError:无法读取未定义的属性'correct_answer'”

  19. 19

    vue.js | TypeError:无法读取未定义的属性“ then”

  20. 20

    VueJS 3 + Laravel:未捕获的TypeError:无法读取未定义的属性“ component”

  21. 21

    TypeError:无法读取VueJS上下文中未定义的属性“替换”

  22. 22

    [Vue警告]:监视程序“ childItems”的回调错误:“ TypeError:无法读取未定义的属性'tag'

  23. 23

    VueJS:未捕获(承诺)TypeError:无法读取未定义的属性“ rol”

  24. 24

    (RSS Feed)未捕获的TypeError:无法读取未定义的属性“ title”

  25. 25

    VueJS-有时会收到错误“未捕获的TypeError:无法读取未定义的属性'process'”

  26. 26

    渲染函数中的错误:“TypeError:无法读取未定义的属性”,使用 Vuex 和 Vue Router

  27. 27

    无法读取未定义的属性“on”?-> 错误

  28. 28

    [Vue 警告]:渲染错误:“TypeError:无法读取未定义的属性‘BTC’”

  29. 29

    vue.js:属性或方法“”未定义,渲染错误:“TypeError:无法读取未定义的属性''”

热门标签

归档