Javascript 是否可以$watch指令';它是跨范围的还是双向绑定的呢?
在具有转移范围的指令中,$watch侦听器似乎不会触发。双向绑定似乎也不起作用。我将粘贴一个简单示例的代码,说明这个问题以及它的jsbin链接。我的问题是:这可能吗?如果是,我做错了什么?任何帮助都将不胜感激 HtmlJavascript 是否可以$watch指令';它是跨范围的还是双向绑定的呢?,javascript,angularjs,Javascript,Angularjs,在具有转移范围的指令中,$watch侦听器似乎不会触发。双向绑定似乎也不起作用。我将粘贴一个简单示例的代码,说明这个问题以及它的jsbin链接。我的问题是:这可能吗?如果是,我做错了什么?任何帮助都将不胜感激 Html <!DOCTYPE html> <html ng-app="app"> <head> <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.min.js"></script>
<meta charset="utf-8">
<title>Angular tips</title>
</head>
<body ng-controller="MainCtrl">
<person header="header">
<h2>{{header}}</h2>
<p>Hello, I am {{person.name}} and,</p>
<p>I am a {{person.profession}}</p>
<input type="text" placeholder="Change me" ng-model="person.name" />
<input type="text" placeholder="Change me" ng-model="person.profession" />
</person>
</body>
</html>
角尖
{{header}}
你好,我是{{person.name}}并且
我是一个{人.职业}
JavaScript
angular.module('app', [])
.controller('MainCtrl', function($scope) {
$scope.person = {
name: 'John Doe',
profession: 'Fake name'
};
$scope.header = 'Person';
})
.directive('person', function() {
return {
restrict: 'EA',
scope: {
header: '='
},
transclude:true,
template: '<div ng-transclude></div>',
link: function(scope, element, attrs) {
scope.$watch('person', function(){
console.log('person changed');
}, true);
scope.person = {
name: 'Directive Joe',
profession: 'Scope guy'
};
scope.header = 'Directive\'s header';
}
};
});
angular.module('app',[])
.controller('MainCtrl',函数($scope){
$scope.person={
姓名:“约翰·多伊”,
职业:“假名字”
};
$scope.header='Person';
})
.directive('person',function(){
返回{
限制:“EA”,
范围:{
标题:'='
},
是的,
模板:“”,
链接:函数(范围、元素、属性){
范围:$watch('person',function(){
console.log(“人员变更”);
},对);
scope.person={
名称:'指令乔',
职业:'范围人'
};
scope.header='指令的头';
}
};
});
您想要实现什么目标?有这么多不同的方法来处理指令,你能具体点吗。谢谢蒂姆。通过将ng keyup指令绑定到我需要查看的输入,我实际上已经解决了我的特定用例,而没有使用$watch。我的问题的目的是了解是否可以在转置范围内使用$watch,原因与在常规范围内使用$watch相同,毕竟我可以对指令范围内使用的每个输入使用ng keyup,但我通常使用$watch,也许我不应该这样做?很好,您将其整理出来。据我所知,更好的选择是使用$observe。attrs.$observe('ngModel',函数(值){console.log('ngModel已将值更改为'+value);});如果它的属性绑定。不过$watch也不错我猜你想达到什么目的?有这么多不同的方法来处理指令,你能具体点吗。谢谢蒂姆。通过将ng keyup指令绑定到我需要查看的输入,我实际上已经解决了我的特定用例,而没有使用$watch。我的问题的目的是了解是否可以在转置范围内使用$watch,原因与在常规范围内使用$watch相同,毕竟我可以对指令范围内使用的每个输入使用ng keyup,但我通常使用$watch,也许我不应该这样做?很好,您将其整理出来。据我所知,更好的选择是使用$observe。attrs.$observe('ngModel',函数(值){console.log('ngModel已将值更改为'+value);});如果它的属性绑定。不过,我想美元的手表也不错