2017-02-07 25 views
0

vueコンポーネントがwebsocket経由でアップデートを受け取ると、<select>の新しい値が設定されます。vue.js selectの値が `undefined`の値を返します

関連コード

  window.VueBus.$on("updated", (channel, key, value) => { 
      let selfChannel = "model." + self.model + "." + self.pk; 
      if(channel === selfChannel) { 
       if(self.key === key) { 
        console.log("Set " + key + " to " + value); 
        self.input.off("change"); 
        console.log("off handler"); 
        self.value = value; // when I set value here error happens 
        self.$nextTick(() => { 
         self.input.on("change", this.onInputChange); 
         console.log("on handler"); 
         self.initInput(true); 
        }); 
       } 
      } 
     }); 

私はこれは私が2つのブラウザウィンドウを開いて、それらのいずれかに変更を加えるとき、それは私に与えるものである

 watch: { 
     value: function(old, newv) { 
      console.log('old-new'); 
      console.log(old) 
      console.log(newv) 
     } 
    }, 

ウォッチ機能を追加しました。

old-new 
19 
     # it is just an empty string 
old-new 
undefined 
19 

しかし、私は、正しい値が

Set recommender_id to 19 
off handler # it is required because onInputChange makes requests to server 

エラーコンソール上のコンポーネントに渡されていることがわかり

TypeError: Cannot read property 'length' of undefined 

それが原因でテンプレート

<div v-bind:class="{'floating-label-form-group-with-value': value.length > 0}"> 

でこの行のです別のウィンドウ(I m ake変更)すべてがうまくいきます。

答えて