在release notes for Vue 1.0.0-rc.1傳遞數據,我們被告知Vue的JS RC-1通過道具不工作
「的繼承選項已被棄用。送花兒給人通過道具 組件的數據傳遞給孩子。」
然而,組件API部分說
「$數據不再被用作道具。」
我一直在試圖將數據傳遞給我的根Vue實例的子組件,並且沒有任何運氣。
在0.12版本。*,如果你想父母實例的數據,方法等/需要訪問,您將只需添加...
inherit: true
...的子組件。
現在,在嘗試通過道具訪問父數據時,我繼續撞到一堵磚牆。下面是一個簡化的例子:
app.js:
new Vue({
el: '#app',
data: {
authorized: false,
currentView: 'welcome-view'
},
components: {
'welcome-view': require('./views/welcome')
}
});
視圖/ welcome.js:
module.exports = {
props: ['authorized'],
template: require('./welcome.template.html')
};
視圖/ welcome.template.html:
<div v-if="authorized"><p>You Are Logged In</p></div>
<div v-else>Please Log In</div>
主查看文件(app.blade.php)
...
<body id="app">
<component :is="currentView"></component>
</body>
...
「授權」道具根本不被識別。它在組件之外工作(在「應用程序」ID內)就好了,但不在模板內。
目前,我可以通過使用$ root來滿足我需要的數據。例如:
<div v-if="$root.authorized"><p>You Are Logged In</p></div>
但是,我的理解是,這是「壞形式」周圍的一切,as the docs say:
雖然可以訪問任何實例的父鏈,你 應避免直接依賴在子組件中的父數據和 優先使用道具明確地傳遞數據。
所以,我需要知道的是... 如何我可以明確地使用道具?我清楚地看到它是錯誤的,因爲如果我只是將它們列在'props:[]'數組中,它們對我的子組件不可用。我在這裏錯過了什麼?
在一天結束時,重構我當前的代碼以取代'inherit:true'並仍然可以訪問根實例數據和函數的最佳方式(標準和實踐)是什麼?任何關於此的幫助/建議都是非常受歡迎的。提前致謝。
構建它的好方法 – vivoconunxino