指令Angularjs、$watch和HTML元素

指令Angularjs、$watch和HTML元素,html,angularjs,element,directive,watch,Html,Angularjs,Element,Directive,Watch,我有个问题。我用angularjs指令编写了一个HTML页面 这是我的密码 <menufileupload visible="rightVisible" alignment="right"> <input type="text" ng-model='expr'/> <!--Other stuff--> </menufileupload> 我正在尝试使用$watch检查文本字段中的任何更改 $scope.$watch(…

我有个问题。我用angularjs指令编写了一个HTML页面 这是我的密码

<menufileupload visible="rightVisible" alignment="right">
    <input type="text" ng-model='expr'/>    
    <!--Other stuff-->
</menufileupload>

我正在尝试使用$watch检查文本字段中的任何更改 $scope.$watch(…)仅在文本字段超出范围时工作 指令。所以我认为我必须在指令中创建一个$watch。我做到了。但它不起作用

指示

app.directive("menufileupload", function() {
  return {
    restrict: "E",
    template: "<div>bla</div>",
    link: function(scope, elem, attrs) {
      scope.$watch('expr', function(obj) {
        alert("it changed");
      }, true);
    }
  };
});
app.directive(“menufileupload”,function()){
返回{
限制:“E”,
模板:“bla”,
链接:功能(范围、要素、属性){
范围:$watch('expr',功能(obj){
警惕(“它改变了”);
},对);
}
};
});

感谢您的帮助

您的指令中有一个模板,因此其中的所有内容都将替换为该标签

如果删除模板,则效果良好。我为您的代码制作了一个codepen示例:


如果希望输入元素显示在指令DOM中,则应使用
ngTransclude
指令。请在文档中查看。

如果您能从更高的层次了解您需要解决的问题,可能会更有帮助。我想你可能走错了路。
angular.module('test', [])

.directive('menufileupload', function () {
  return {
    restrict: "E",
    link: function(scope, elem, attrs) {
      scope.$watch('expr', function(obj) {
        alert("it changed");
      }, true);
    }
  };
});