2017-03-01 13 views
0

完全なコードボタンをクリックした後、定義されていません:Main.vue計算さ変数が

https://github.com/kenpeter/test_vue_simple_audio_2

を私はこのguideに従うことによって、this.player.currentTrackに新しい値を割り当てようとしました。

selectTrack: function selectTrack(id) { 
    this.player.currentTrack = Object.assign(
    {}, 
    this.player.currentTrack, 
    { currentTrack: id }, 
); 
    this.player.elapsed = Object.assign(
    {}, 
    this.player.elapsed, 
    { elapsed: 0 }, 
); 
    // this.play(); 
}, 

私がイメージからcurrentTrack.duration

<div class="player__timer"> 
    <div class="player__timer__elapsed" v-text="player.elapsed"></div> 

    <div class="player__timer__total" v-text="currentTrack.duration"></div> 
</div> 

<div class="slider player__progress-bar"> 
    <input type="range" :value="player.elapsed" :max="currentTrack.duration" /> 
</div> 

、ボタンをMain.vueで

Error

Error: Cannot read property 'duration' of undefined 

をクリックするまで、あなたがそれを見ることができ、エラー思いません値は274で、これはの値ですは、最初にである。ボタンをクリックすると、currentTrackは未定義になります。 currentTrackcomputedの値です。

答えて

0

あなたはこの試みる、currentTrack.duration代わりのplayer.currentTrack.durationを使用:これはobject.assign行うための正しい方法である

<div class="player__timer"> 
    <div class="player__timer__elapsed" v-text="player.elapsed"></div> 

    <div class="player__timer__total" v-text="player.currentTrack.duration"></div> 
</div> 

<div class="slider player__progress-bar"> 
    <input type="range" :value="player.elapsed" :max="player.currentTrack.duration" /> 
</div> 
+0

こんにちは、currentTrackの場合、実際には2つ(同じ名前)です。 1つはplayer.currentTrackで、もう1つは{currentTrack:function()....}と計算されます。私は計算されたものが必要です。計算されたテンプレートを使用するにはどうすればよいですか? – kenpeter

0

を。私の上記の方法は間違っています。

let player = { 
    currentTrack: 0, 
    other: "" 
}; 

console.log(player); 

player = Object.assign(
    {}, 
    player, 
    { currentTrack: 2} 
); 

console.log(player);