指令 Angularjs、$watch 和 HTML 元素
Directive Angularjs, $watch and HTML Element
我有一个问题。我用 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);
}
};
});
感谢您的帮助
您的指令中有一个模板,因此其中的所有内容都将被该 <div>
标记替换。
如果您删除模板,它会正常工作。我为您的代码制作了一个代码笔示例:
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
指令。请在文档中查看。
我有一个问题。我用 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);
}
};
});
感谢您的帮助
您的指令中有一个模板,因此其中的所有内容都将被该 <div>
标记替换。
如果您删除模板,它会正常工作。我为您的代码制作了一个代码笔示例: 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
指令。请在文档中查看。