我有一个问题。我使用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);
}
};
});
感谢您的帮助
答案 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
指令。请在文档中查看。