0

私のhtmlは2つの形式で入力を取りinputcontenteditable div. 両方を処理する 1 つのディレクティブを作成したいのですが、関数を呼び出したタグを特定する方法が見つかりません (Angular の JQLite は is() または get() 関数を提供していないため)。IS_INPUT_TAG を評価する方法がわかれば、次のコードは完成します。

function funct() { return {
    require: 'ngModel',
    link: function(scope, element, attrs, ctrl) {
        // view -> model
        element.bind('input', function() {
            scope.$apply(function() {
                    if(IS_INPUT_TAG)
                      ctrl.$setViewValue(element.val());
                    else
                          ctrl.$setViewValue(element.text());
                scope.watchCallback(element.attr('data-ng-model'));
            });
          });
        // model -> view
        ctrl.$render = function() {
            if(IS_INPUT_TAG)
                  element.val(ctrl.$viewValue);
             else
                  element.text(ctrl.$viewValue);
        };
     }};
}

app.directive('input', funct);
app.directive('contenteditable', funct);
4

1 に答える 1

0

ディレクティブでelementは、リンク関数のパラメーターを使用して、ディレクティブが適用されるタグを識別できます。その後、次のように IF 条件で使用できます。

ctrl.$render = function() {
    var tagname = element["0"].tagName;

    if(tagName === "INPUT")
          element.val(ctrl.$viewValue);
    else
          element.text(ctrl.$viewValue);
};

その後、ディレクティブを にinputdivタグを属性としてタグに添付するだけで、ディレクティブが適用されるタグを識別できます。

于 2013-09-02T08:49:25.617 に答える