2017-10-27 4 views
0

Markoコンポーネントからグローバル変数にアクセスしようとしていますが、私はUncaught ReferenceError: out is not definedを取得しています。

class { 
    onClick(event) { 
     console.log(out.global.message) 
     event.preventDefault() 
    } 
} 

out.global/$globalどこでもアクセス可能であるべきではないでしょうか。

答えて

1

outは、特定のライフサイクルメソッドのコンポーネント(onCreate(input, out)onInput(input, out)、および)に利用可能になりました。それらの一つで、他の場所でクラスでもアクセスできるようにするためにあなたがthisしたい値を割り当てる:

非トップレベルのコンポーネント、状態およびプロパティについては
class { 
    onCreate(input, out) { 
     this.message = out.global.message 
    } 

    onClick(event) { 
     console.log(this.message) 
     event.preventDefault() 
    } 
} 

は自動的にシリアル化されていませんしたがって、上記のコードでは、サーバー上のコンポーネントにthis.messageが設定されますが、そのプロパティーはクライアント上では定義されません。

非トップレベルのコンポーネントにクライアント上out.global.messageが利用できるようにするには、あなたはそれがthe docs on server-side renderingのように、シリアル化する必要があることを指定するには、レンダリング機能を変更する必要があります。

template.render({ 
    $global: { 
     serializedGlobals: { 
      message: true 
     } 
    } 
}, res); 
関連する問題