以前 HTML を解析したことがあるので、今日は Vue ドラッグ アンド ドロップを使用して、Kuai Station と同様の自動コード生成を実現したいと思います。その結果、Vue の v-html は XSS 攻撃を防ぐために HTML しか解析できないため、以前はドラッグ コンポーネントを解析できないという問題に遭遇しました。 アイデアまず、左、中央、右の3つの部分に分かれたシンプルなページを実装します。左側はドラッグする必要があるコンポーネント、中央はコンポーネントの配置と表示に使用され、右側は解析されたコードです。 左側のコンポーネントリストコード <div ref="テスト"> <one-component :title="title[0]" element="<el-radio v-model='radio' label='1'>代替オプション</el-radio>"> <el-radio slot="component" v-model="radio" label="1">オプション</el-radio> </1 つのコンポーネント> </div> </テンプレート> <スクリプト> '../components/oneComponent' から OneComponent をインポートします。 エクスポートデフォルト{ 名前: ''、 データ() { 戻る { ラジオ: '2', タイトル: ['ラジオシングルチェックボックス'] } }, コンポーネント:{ ワンコンポーネント }, } </スクリプト> <style lang="stylus" スコープ> </スタイル> 中間コンポーネント表示コード <div class="all"> <el-form label-width="80px" label-position="left" :model="ruleForm" :rules="rules"> <el-form-item label="シミュレートされた幅" prop="inputW"> <el-input v-model="ruleForm.inputW" placeholder="幅を入力してください"></el-input> </el-form-item> <el-form-item label="シミュレーションの高さ" prop="inputH"> <el-input v-model="ruleForm.inputH" placeholder="身長を入力してください"></el-input> </el-form-item> </el-form> <変数ボックス クラス="ボックス" :width="ruleForm.inputW" :height="ruleForm.inputH" </変数ボックス> </div> </テンプレート> <スクリプト> 「../components/Variablebox」からVariableboxをインポートします。 エクスポートデフォルト{ 名前: ""、 データ() { var checkSize = (ルール, 値, コールバック) => { console.log(値); (値 < 500 || 値 > 1000)の場合 { callback(new Error("500 から 1000 の間の数値が推奨されます")); } そうでない場合 (!Number.isInteger(Number(value))) { callback(new Error("数値を入力してください")); } それ以外 { 折り返し電話(); } }; 戻る { ルールフォーム: { 入力W: 500, 入力H: 500 }, ルール: inputW: [{ バリデータ: checkSize, トリガー: "blur" }], inputH: [{ バリデータ: checkSize, トリガー: "blur" }] } }; }, メソッド: { }, コンポーネント: 変数ボックス } }; </スクリプト> <style lang="stylus" スコープ> 。全て パディング: 0 20px ディスプレイ: フレックス フレックス方向: 列 </スタイル> 次に、ドラッグアンドドロップを使用してコンポーネントのドラッグを実装し、Variableboxページにコンポーネントを表示します。 v-htmlの使用が失敗した後、Baiduで検索したところ、基本的にはvue.Vue.compile( template )を使用してレンダリングすることを呼び出していることがわかりましたが、例はありませんでした。 compileはテンプレート文字列をrender関数にコンパイルします。つまりrenderは最終的にcreateElementを呼び出してHTMLに変換しますが、直接レンダリングします。 新しいVue({ // el: '#app' テンプレート: this.ele, データ:{ ラジオ: '2' }, }).$mount("#apps"); これにより、問題は一時的に解決されます。 v-html を使用して vue でタグをレンダリングする表示のためにページにレンダリングする必要があるラベル コンテンツを含む背景データを取得します。最終的な効果は次のようになります: グラフィックとテキストのレイアウト 1. まずデータを取得し、個別に処理する 2. HTMLで出力します 以下もご興味があるかもしれません:
|
<<: 正の整数かどうかを判断するMYSQLカスタム関数の例コード
>>: Win7 で IIS7 Web および FTP サービスを完全にアンインストールする方法
この記事では、画像の切り取りとアップロードを実装するためのvue-cropperコンポーネントの具体...
フロントエンド開発を行っている初心者の学生を多く見かけますが、彼らの効率は比較的遅いです。常にコード...
目次概要フィルターの定義フィルターの使用カスタムグローバルフィルターローカルフィルター予防例1(ロー...
序文最近、私は小さな個人ブログ プロジェクトを書くのに忙しくしています。 「グローバル検索」機能を実...
1. 最新のnginx dockerイメージをダウンロードする $ docker pull ngin...
目次1. React フックと純粋関数2. シンプルなmyUseState 3. myUseStat...
序文指定した文字による結合または分割は一般的なシナリオです。MySQL では結合の記述は比較的簡単で...
方法1: cmdコマンドを使用するまず、DOS ウィンドウを開き、スタート、実行、cmd と入力しま...
インストール環境: CentOS7 64ビット、MySQL5.7 1. YUMソースを設定するMyS...
序文vsftp は使いやすく安全な FTP サーバー ソフトウェアです。システムユーザーまたは仮想ユ...
ファイル サーバーは、企業内で最も一般的に使用されるサーバーの一つであり、主にファイル共有を提供する...
目次使用シナリオ解決1. globalDataを使用して実装する2. ローカルキャッシュストレージを...
目次1. ストアドプロシージャに関連する概念2. ストアドプロシージャの使用1) ストアドプロシージ...
目次簡単なコンポーネントの例より複雑な親子コンポーネントのケースオンセレクトの書き方反応する子供Re...
コンテキストの定義と目的コンテキストは、コンポーネント ツリーにプロパティを明示的に渡すことなく、コ...