Javascript 是否可以$watch指令';它是跨范围的还是双向绑定的呢?

Javascript 是否可以$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.

在具有转移范围的指令中,$watch侦听器似乎不会触发。双向绑定似乎也不起作用。我将粘贴一个简单示例的代码,说明这个问题以及它的jsbin链接。我的问题是:这可能吗?如果是,我做错了什么?任何帮助都将不胜感激

Html

<!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);});如果它的属性绑定。不过,我想美元的手表也不错