2

インライン エディターで構成されるディレクティブを作成しています。値がない場合、編集ボックスが表示されます。値がある場合、通常のスパンが表示されます。

これはディレクティブのテンプレート チャンクです。

template: function (element,attrs) {

    if (1 === 2) {
        return "<div class='true'>{{product.title}}</div>";
    } else {
        return "<div class='false'>{{product.title}}</div>";
    }

}

上記のコードは機能しますが、条件は受け取ったモデル値に基づいており ngModel、以前に渡しましたが、機能しませんでした:

require: '?ngModel',

template: function (element,attrs,ngModel) {

    if (ngModel.$modelValue !== null) {
        return "<div class='true'>{{product.title}}</div>";
    } else {
        return "<div class='false'>{{product.title}}</div>";
    }

}

HTML:

<div inline-editor ng-model="product.title"></div>

モデル値に基づいて別のテンプレートをロードする AngularJS ディレクティブを取得するにはどうすればよいですか?

編集:皆さんの回答に感謝します!, 私はあなたのコメントを受け取りました, 今私は次のコードを持っています. 今まで私のために働いてきたので、私はそれに取り組み続けます。

return {
    restrict: "A",
    require: '?ngModel',
    link: function (scope, element, attrs, ngModel) {

        if (!ngModel) return;       

        //Formatter
        function writeElement (value) {

            var template;

            if (value !== null) {
                template = "<span>" + value + "</span>";
            } else {
                //template for false
            }

            element.replaceWith(template);
        }

        ngModel.$formatters.push(writeElement);

   }
4

2 に答える 2