iT邦幫忙

0

Vue的components綁定數據超基本問題

  • 分享至 

  • xImage

快中風了 始終不知道為何named沒有跑出資料

https://ithelp.ithome.com.tw/upload/images/20200106/20122813xWEsrj6ML3.jpg

codepen:
https://codepen.io/ofcourse448/pen/mdypmvo

然而這個卻能跑出資料?

https://ithelp.ithome.com.tw/upload/images/20200106/20122813MnQxuXwp0m.jpg

codepen:
https://codepen.io/ofcourse448/pen/VwYybRE

看更多先前的討論...收起先前的討論...
自學Vue快一個月了 第一次學框架怎麼這麼難...
咖咖拉 iT邦好手 1 級 ‧ 2020-01-06 15:38:56 檢舉
不是出來了嗎XD
沒有阿 上面的那個name沒有顯示阿 可以開console看一下
@咖冰拉 你不是之前被我騙去買asp.net虛擬網站的嗎XDD
咖咖拉 iT邦好手 1 級 ‧ 2020-01-06 15:54:58 檢舉
對...那個空間 我也不能架mvc
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
listennn08
iT邦高手 5 級 ‧ 2020-01-06 16:12:38
最佳解答
new Vue({
    el: '#app',
    data: {
        name: 'Mary'
    },
    components: {
        'hello': {
            props: {
                named: String
            },
            template: `<p>歡迎{{named}}來到Vue.js前端設計!</p>`
        },
        'goodbye': {
            props: {
                named: String
            },
            template: `<p>{{named}},再見,期待您很快就再回到Vue.js前端設計!</p>`
        }
    }
})
new Vue({
    el: '#app',
    data: {
        name: 'Tom'
    },
    // 這一段
    //props: {
    //    named: String 
    //},
    components: {
        'showsomething': {
            //要在這
            props: {
                named: String 
            },
            template: `<p>{{named}}這不是我要的!</p>`
        }
    }
})

謝大哥 雖然您沒有說半句話 但是從您的程式碼散發出一股優雅的光芒

已經知道問題在哪了 謝謝

咖咖拉 iT邦好手 1 級 ‧ 2020-01-06 16:38:22 檢舉

/images/emoticon/emoticon14.gif

0
舜~
iT邦高手 1 級 ‧ 2020-01-06 15:48:49

沒用過vue.js
會不會是因為is?? 您的第二章圖有is

<OOOO is="showsomething" :named="...">.....

還有就是您第二張圖下方的goodBye有props參數設定,您的showsomething宣告內沒有,所以vue根本不知道您有:named參數?? 把props參數移到showsomething內看看

components: {
    'showsomething' :{
        props: { named: String},
        template:`<p>{{named}}...</p>`
    }
}
看更多先前的回應...收起先前的回應...

應該不是XD

舜~ iT邦高手 1 級 ‧ 2020-01-06 16:17:40 檢舉

還有就是您第二張圖下方的goodBye有props參數設定,您的showsomething沒有,所以vue根本不知道您有:named參數?? 把props參數移到showsomething內看看

我剛剛以為發現新大陸 結果還是不行

舜~ iT邦高手 1 級 ‧ 2020-01-06 16:38:55 檢舉

is別忘了要一起試,還有您的showsomething改用componsent
<componsent is="showsomething" :named="named"></componsent>

為什麼要用componsent

0
咖咖拉
iT邦好手 1 級 ‧ 2020-01-06 15:50:16

這剛好有碰過

VUE的component 有個小毛病

它不能寫在 new Vue下面

new Vue({
            el: '#app',
            data: {
                name: 'Tom'
            },
            props: {
                named: String
            },
            components: {
                'showsomething': {
                    template: `<p>{{named}}這不是我要的!</p>`
                }
            }
        })

這樣一定出錯給你看 你必須

  const showsomething = {
            props: {
                named: String
            },
            template: `<p>{{named}},再見,期待您很快就再回到Vue.js前端設計!</p>`
        }
       
       


        new Vue({
            el: '#app',
            data: {
                name: 'Tom'
            },
 
            components: {
               showsomething
            }
        })

就跟妳寫的一樣 寫在上面就好了XD

雖然有最佳了 還是把它打完整

/images/emoticon/emoticon22.gif

看更多先前的回應...收起先前的回應...

這個答案很好 但是不能滿足我 哈哈

除非有另外一位大哥說 真的只能這樣

咖咖拉 iT邦好手 1 級 ‧ 2020-01-06 16:04:59 檢舉

上班中沒時間打太細

沒事

3
Homura
iT邦高手 1 級 ‧ 2020-01-06 16:17:35

你有沒有注意到你第2個寫法
裡面的prop是寫在compoments...

看更多先前的回應...收起先前的回應...

有嗎 我看了兩遍都是寫在new Vue的components阿

再仔細看看...

OKOK 哈哈 從樓上大哥寫給我的 已經知道問題在哪了 傻眼貓咪 謝謝!

Homura iT邦高手 1 級 ‧ 2020-01-06 16:34:29 檢舉

listennn08寫的才是跟你第2種寫法一樣

ofcourse448

謝啦 原來可以標記別人Homura

1
EN
iT邦好手 1 級 ‧ 2020-01-07 10:41:15

回覆咖冰啦:這不是Vue的小毛病喔,官方文件有說components需要註冊在根實例(也就是new Vue)之前!
引用自Vue官方文件:
....
Remember that global registration must take place before the root Vue instance is created (with new Vue)
.....
連結:https://vuejs.org/v2/guide/components-registration.html

雖然樓主已經有給最佳解但還是補充一下,如果內容有誤麻煩告知我XD

看更多先前的回應...收起先前的回應...

謝謝Peter哥 我最佳解都是給字還有配色最多的 至於我有沒有看懂是其次

Homura iT邦高手 1 級 ‧ 2020-01-07 12:04:48 檢舉

可是你引用這段的英文是寫...
組件在全域註冊時,才能讓所有的Vue根實例使用,在Vue建立之前...

咖咖拉 iT邦好手 1 級 ‧ 2020-01-07 16:13:34 檢舉

/images/emoticon/emoticon42.gif

这些组件是全局注册的。也就是说它们在注册之后可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中。

其實 Vue 的中文 document 寫得滿不錯的啊 /images/emoticon/emoticon06.gif

Remember that global registration must take place before the root Vue instance is created (with new Vue).

你可能跟這段搞混了
不過這段的意思也是全域註冊的組件要在建立根實例之前註冊

EN iT邦好手 1 級 ‧ 2020-01-07 17:07:00 檢舉

listennn08
嗯嗯,我是直接貼Vue pwa的內文,沒有切到簡體,下次會看仔細一點XD

我要發表回答

立即登入回答