繁体   English   中英

角度指令不看

[英]Angular directive not watching

我在AngularJS中使用指令,并且尝试检查我的字段是否为$ dirty,如果是真的,我想记录一条消息,当它更改时,我想显示另一条消息(该句子稍后将替换为一些更复杂的东西)。

我想在所有输入中重用我的指令,但我不能。 提前致谢。

<input ng-edited ng-model="stakeholder.nombre" name="nombre" type="text">

我的指令是这样的:

MetronicApp.directive('ngEdited', function () {
    return {
        restrict: 'A',
        require: ['^form', 'ngModel'],
        link: function (scope, elem, attrs, req) {
            scope.elemDirty = req[1].$dirty;
            scope.elemName = req[1].$name;
            var doFunction = function () {
                if (scope.elemDirty) {
                    console.log("true");
                } else {
                    console.log("false");
                }
            };
            scope.$watch(scope.elemName, doFunction, true);
        }
    };
});

根据此答案 ,为什么不尝试

link: function (scope, elem, attrs, ngModel) {
    var doFunction = function (isDirty) {
        if (isDirty) {
            console.log("true");
        } else {
            console.log("false");
        }
    };
    scope.$watch(function(){return ngModel[1].$dirty;},doFunction);
}

见朋克

编辑

我注意到在您的问题中,您正在尝试观察元素名称的更改。 我不确定您将如何更改该属性,但是如果您要更改属性,请使用attrs。$ observe

attrs.$observe('name', doFunction);

如果您使用的是参数(而不是字符串),则需要从函数中返回它:

scope.$watch(function () {
    return scope.elemName;
}, doFunction, true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM