Javascript 我不看

Javascript 我不看,javascript,angularjs,directive,Javascript,Angularjs,Directive,我在AngularJS中使用了一个指令,我试图检查我的字段是否为$dirty,如果是真的,我想记录一条消息,当它发生变化时,我想显示另一条消息(这句话稍后会被更复杂的内容替换) 我想在我的所有输入中重用我的指令,但我不能。提前谢谢 <input ng-edited ng-model="stakeholder.nombre" name="nombre" type="text"> 基于此,为什么不试试呢 link: function (scope, elem, attrs, ngMod

我在AngularJS中使用了一个指令,我试图检查我的字段是否为$dirty,如果是真的,我想记录一条消息,当它发生变化时,我想显示另一条消息(这句话稍后会被更复杂的内容替换)

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

<input ng-edited ng-model="stakeholder.nombre" name="nombre" type="text">
基于此,为什么不试试呢

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);
}

编辑

我注意到,在你的问题中,你试图观察元素名称的变化。我不确定您将如何更改该属性,但如果是,请使用


如果使用的是参数(与字符串相反),则需要从函数返回:

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

我不确定本例中的
req[1]
是什么。通常一个控制器作为第四个参数传递给link函数。@Claies我通过第四个参数发送两项:form和ngmodel,你可以在requirenope中看到它,它不起作用:-)还是不看changes@JeanCedronplunker可以工作,你能解释一下什么对你不起作用吗?我也试过,但它不起作用,它看不到任何东西change@JeanCedron你能提供一把小提琴吗?
attrs.$observe('name', doFunction);
scope.$watch(function () {
    return scope.elemName;
}, doFunction, true);