コントローラ変数の変更時にディレクティブによって作成された要素を更新します

あしゅ

ユーザーが動的なフォームを作成できるAngularアプリを作成しようとしています。このユーザーでは、フォームフィールドを作成し、フォームメタデータを保存できます。これは、実際のフォームを表示するために使用されます。ディレクティブを使用して要素を作成するライブプレビューがあります。

私はAngularを初めて使用するため、バインディングが機能しない理由と、それを機能させるために必要な変更を理解できません。ここで必要なのは、上記のデータが変更されるとすぐにライブプレビューセクションが更新されることです。たとえば、タイプをテキストからパスワードに変更すると、ライブプレビューの入力ボックスはパスワードタイプになります。次のコードは、メインアプリからのスニペットです。残念ながら、Angularバージョンを変更することはできません。

HTML

<form ng-submit="">
    <div ng-repeat="tagfield in tagfields">
        <dynamic-form dataobject="tagfield"></dynamic-form>
    </div>
    <button type="reset">Reset</button>
    <button type="submit">Submit</button>
</form>

脚本

app.directive('dynamicForm', [ '$rootScope', function($rootScope){
    return{
        restrict: 'E',
        scope: {
            dataObject:'=dataobject'
        },
        link: function(scope, element, attrs){
            element.append(
                    'Sample directive ' + scope.dataObject.selectmodel
                    + '<input type='+scope.selectmodel+' 
                       ng-model='+scope.dataObject.idmodel+'>'
            );
        }
    }

}]);

plunkerの詳細なコード

https://embed.plnkr.co/7jBm9vxSx3y1hCCwjy1w/

ヴィクラム・シン

プランカーで以下のコードを試してみて、それが機能するかどうか教えてください

app.directive('dynamicForm', [ '$compile', function($compile){
return{
    restrict: 'E',
    scope: {
        dataObject:'=dataobject'
    },
    link: function(scope, element, attrs){

        var el  ="Sample directive <span>" + scope.dataObject.selectmodel
                + "</span><input type="+scope.dataObject.selectmodel+ "ng-value="+scope.dataObject.idmodel+"/>";
        element.append(el);
        scope.$watch('dataObject.selectmodel',function(newvalue,oldvalue){

        if(oldvalue !=newvalue)
         addelement(newvalue);
        },true)

        function addelement(valuedata)
        {
               element.children().remove()
                var el  ="Sample directive <span>" +             scope.dataObject.selectmodel
                + "<span>"+"<input type='"+valuedata+ "'ng-value='"+scope.dataObject.idmodel+"'/>'";
        element.append($compile(el)(scope));

        }
    }
}

}]);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ディレクティブによって更新されたコントローラー変数でAngular $ watchが機能しない

分類Dev

Angular-渡された変数に応じてコンポーネント/ディレクティブのサイズを変更します

分類Dev

AngularJS:ディレクティブスコープのオブジェクトに関連付けられているコントローラースコープを変更時に更新するにはどうすればよいですか?

分類Dev

どうやってangular.jsのディレクティブコントローラーを動的に変更しますか

分類Dev

ディレクティブテンプレート内の$ scope変数にアクセスし、コントローラー$ scope.variableを更新します

分類Dev

コントローラの$ scope変数をネストされたディレクティブのコントローラに渡す

分類Dev

コントローラーでスコープ変数を分離したまま、ディレクティブを変更するにはどうすればよいですか?

分類Dev

ディレクティブでコントローラースコープ変数を変更しても、コントローラー関数には反映されません

分類Dev

AngularJSディレクティブがスコープ変数の変更時に更新されない

分類Dev

Angular-コントローラー関数呼び出しのスコープ変数の更新がディレクティブhtmlに反映されない

分類Dev

WPFバインディングテキストブロックテキストはプロパティで更新されますが、テキストはコンバーターによって変更されます

分類Dev

Angular 2+では、Angularディレクティブも適用されている場合、ネイティブ要素をテンプレート変数にバインドするようにどのように指定しますか?

分類Dev

javascriptによって要素が作成されているため、eventListenerを使用して必要な数の要素のcssプロパティを変更できません

分類Dev

スコープ変数が変更されたときにディレクティブを変更する

分類Dev

子ディレクティブで親ディレクティブのコントローラースコープ変数にアクセスします

分類Dev

親スコープの変更時にangularJsディレクティブスコープ変数を更新します

分類Dev

アプリがユーザーによってアクティブに使用されているときに、バックグラウンドスレッドのレイアウトの更新/変更に関する通知を受け取ります

分類Dev

GNUparallelによって作成されたすべての隠しディレクトリの名前を変更します

分類Dev

リンクされたコントローラーにディレクティブ属性を渡しますか?

分類Dev

httpリクエストで定義されたスコープ変数をコントローラーからディレクティブに渡す

分類Dev

更新時にグラデーションの色を変更しますが、カーソル位置要素をアクティブのままにしますか?

分類Dev

インデックスファイル(html / php)のないディレクトリに対してブラウザによって生成されたデフォルトの「インデックス」ページを変更することは可能ですか?

分類Dev

Blazor-別のコンポーネントによって変更されたサービスのプロパティにバインドします

分類Dev

サードパーティのJSスクリプトによって作成されたHTMLコンテンツを変更する

分類Dev

コントローラで「this」または「varVm = this」を使用して宣言された変数は、ディレクティブを使用してアクセスしたときに値を反映していません

分類Dev

監視可能なコレクション内のアイテムが変更されたときに、現在のクラスプロパティを更新します

分類Dev

ディレクティブのテンプレートは、コンパイルによって設定された値を取得しません

分類Dev

コントローラのプロパティの変更は、一部のディレクティブのバインドされたプロパティ全体には影響しません

分類Dev

ディレクティブのコントローラーがなくても、変数をvmとしてディレクティブスコープにバインドしますか?

Related 関連記事

  1. 1

    ディレクティブによって更新されたコントローラー変数でAngular $ watchが機能しない

  2. 2

    Angular-渡された変数に応じてコンポーネント/ディレクティブのサイズを変更します

  3. 3

    AngularJS:ディレクティブスコープのオブジェクトに関連付けられているコントローラースコープを変更時に更新するにはどうすればよいですか?

  4. 4

    どうやってangular.jsのディレクティブコントローラーを動的に変更しますか

  5. 5

    ディレクティブテンプレート内の$ scope変数にアクセスし、コントローラー$ scope.variableを更新します

  6. 6

    コントローラの$ scope変数をネストされたディレクティブのコントローラに渡す

  7. 7

    コントローラーでスコープ変数を分離したまま、ディレクティブを変更するにはどうすればよいですか?

  8. 8

    ディレクティブでコントローラースコープ変数を変更しても、コントローラー関数には反映されません

  9. 9

    AngularJSディレクティブがスコープ変数の変更時に更新されない

  10. 10

    Angular-コントローラー関数呼び出しのスコープ変数の更新がディレクティブhtmlに反映されない

  11. 11

    WPFバインディングテキストブロックテキストはプロパティで更新されますが、テキストはコンバーターによって変更されます

  12. 12

    Angular 2+では、Angularディレクティブも適用されている場合、ネイティブ要素をテンプレート変数にバインドするようにどのように指定しますか?

  13. 13

    javascriptによって要素が作成されているため、eventListenerを使用して必要な数の要素のcssプロパティを変更できません

  14. 14

    スコープ変数が変更されたときにディレクティブを変更する

  15. 15

    子ディレクティブで親ディレクティブのコントローラースコープ変数にアクセスします

  16. 16

    親スコープの変更時にangularJsディレクティブスコープ変数を更新します

  17. 17

    アプリがユーザーによってアクティブに使用されているときに、バックグラウンドスレッドのレイアウトの更新/変更に関する通知を受け取ります

  18. 18

    GNUparallelによって作成されたすべての隠しディレクトリの名前を変更します

  19. 19

    リンクされたコントローラーにディレクティブ属性を渡しますか?

  20. 20

    httpリクエストで定義されたスコープ変数をコントローラーからディレクティブに渡す

  21. 21

    更新時にグラデーションの色を変更しますが、カーソル位置要素をアクティブのままにしますか?

  22. 22

    インデックスファイル(html / php)のないディレクトリに対してブラウザによって生成されたデフォルトの「インデックス」ページを変更することは可能ですか?

  23. 23

    Blazor-別のコンポーネントによって変更されたサービスのプロパティにバインドします

  24. 24

    サードパーティのJSスクリプトによって作成されたHTMLコンテンツを変更する

  25. 25

    コントローラで「this」または「varVm = this」を使用して宣言された変数は、ディレクティブを使用してアクセスしたときに値を反映していません

  26. 26

    監視可能なコレクション内のアイテムが変更されたときに、現在のクラスプロパティを更新します

  27. 27

    ディレクティブのテンプレートは、コンパイルによって設定された値を取得しません

  28. 28

    コントローラのプロパティの変更は、一部のディレクティブのバインドされたプロパティ全体には影響しません

  29. 29

    ディレクティブのコントローラーがなくても、変数をvmとしてディレクティブスコープにバインドしますか?

ホットタグ

アーカイブ