指令Angularjs,$ watch和HTML Element

时间:2015-02-20 05:06:59

标签: html angularjs element directive 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);
    }
  };
});

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的指令中有一个模板,因此其中的所有内容都将替换为<div>标记。

如果删除模板,它可以正常工作。我创建了代码的codepen示例: http://codepen.io/argelius/pen/jEzQVJ

angular.module('test', [])

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

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