2017-01-18 20 views
2

私はいくつかのデータを必要とするvueコンポーネントを持っています。私は簡単に作成し、PHPのjsonデータをコンポーネントに渡します。しかし、私はjavascriptでオブジェクトを定義し、それをvueコンポーネントに送信したいと思います。以下は、php変数を正しく渡す私の.blade.phpファイルです。スクリプトセクションでは、javascriptオブジェクトjs_table_definitionを定義します。そのオブジェクトはコンポーネントに行きたくありません。javascriptからvuejsコンポーネントにjavascript変数を渡します。

<?php 
$table_definition = (object) [ 
    "name" => "vendors", 
    "access" => "read", 
    "search_post_route" => "", 
    "index_post_route" => "", 
    "index_get_route" => "", 
    "header_definition" => [], 
    "footer_definition" => [], 
    "column_definition" => [], 
]; 
?> 
@section('content') 
    <div class="panel-body"> 
     <zzi-results-table 
       v-bind:results="{{ json_encode($vendors) }}" 
       v-bind:table_definition="{{ json_encode($table_definition) }}" 
     > 
     </zzi-results-table> 
    </div> 
@stop 

@section('script') 
    //can't get this variable to zzi-results-table 
    js_table_definition = { 
     "name" : "vendors", 
     "access" : "read", 
     "search_post_route" : "", 
     "index_post_route" : "", 
     "index_get_route" : "", 
     "header_definition" : [], 
     "footer_definition" : [], 
     "column_definition" : [], 
    }; 

@stop 

私は運がないすべての種類のものを試しました。私はそれが私はそれがグローバル変数をハードコードし、それは非常に再利用可能でなくなるようVUEコンポーネントの「データ」メソッドに追加したくない

v-bind:table_definition="{{ js_table_definition }}" 
v-bind:table_definition="@{{ js_table_definition }}" 
v-bind:table_definition="js_table_definition" 
js_table_definition="js_table_definition" 

ようなものになるだろうと思いました。私はそれを渡す必要があると思う。 PHP-Vars-To-Js-Transformer:ここ

は、JavaScriptパッケージを使用することができ、私のコンポーネントのjs

export default { 
    //data: function(){ 
    // return 
    // { 
    //  vendors:vendors 
    // } 
    // }, 
    props: ['results', 'table_definition'], 
    mounted() { 
     console.log('Hi from zzi-results-table'); 
     console.log(this.results); 
     console.log(this.table_definition); 
     var results_table = new dynamic_table(this.table_definition, this.results); 

}, 

} 
+0

は、レンダリングされたHTMLは、具体的には、 'V-バインドを中心に、どのようなものに見えるん:table_definition = "{{json_encode($ table_definition)}}"'? – Phil

+0

これは、作業コード... PHPのV-バインドからダンプである:table_definition = "{"名":"ベンダー"、"アクセス":"は、"を読ん" search_post_route ":" "、" index_post_route ":" " 、" index_get_route ":" "、" header_definition ":[]、" footer_definition ":[]、" column_definition ":[]} "javascript変数を挿入しようとすると、さまざまな結果が得られます。私も文字列にしようとしました – Iannazzi

答えて

0

としては、あなたの意見にLaravel変数を渡すために、hereを説明しています。

あなたはこのパッケージを追加した後に、このコードを持つことができます。今すぐ

$table_definition = (object) [ 
    "name" => "vendors", 
    "access" => "read", 
    "search_post_route" => "", 
    "index_post_route" => "", 
    "index_get_route" => "", 
    "header_definition" => [], 
    "footer_definition" => [], 
    "column_definition" => [], 
]; 

JavaScript::put([ 
     'table_definition' => $table_definition 
]) 

table_definitionは、あなたのVUEのインスタンスで利用可能であるべきです。


PHP変数をインスタンスに渡す場合は、hereの方法を使用できます。実際のブレードビューでVueインスタンスを開始しておく必要があります。単にスクリプトタグ内とあなただけ行うことができます。

<script> 
new Vue({ 
    data: { 
     table_definition: {!! $table_definition !!} 
    } 
}) 
</script> 
+0

PHPからjavascript変数を作成する問題はありません。私はインスタンス変数ではなく、vueコンポーネントに行くためにjavascript変数が必要です.....私は思っています。本当に簡単にする必要があります....私は間違っている各ページの新しいvueのインスタンスを作成しない限り – Iannazzi

関連する問題