Angularjs 控制器和指令之间的作用域共享

Angularjs 控制器和指令之间的作用域共享,angularjs,angular-ui,Angularjs,Angular Ui,我在一个简单的范围变量上有一些奇怪的行为,当我更改其内容时,它不会进入观察者: $scope.test = "test"; $scope.$watch('test', function (newVal, oldVal) { console.log("watcher=>"+newVal); }); 但当我经过一个物体时,它会起作用: $scope.test = {title: "test"}; $scope.$watch('test.title', function (newVal

我在一个简单的范围变量上有一些奇怪的行为,当我更改其内容时,它不会进入观察者:

$scope.test = "test";
$scope.$watch('test', function (newVal, oldVal) {
    console.log("watcher=>"+newVal);
});
但当我经过一个物体时,它会起作用:

$scope.test = {title: "test"};
$scope.$watch('test.title', function (newVal, oldVal) {
    console.log("watcher=>"+newVal);
});
我无法在小提琴上再现这种行为:

编辑:

我用这把小提琴再现了我的问题:
我认为这与Angular的不好使用有关,所以如果有人能找到并解释我错过了什么;)

您所要做的就是在指令的模板中使用
ng model
,它可以按预期工作


姓名:
地址:{{customerInfo.Address}
实际上,您也不需要一个独立的作用域


定义控制器的两种方法应该是可互换的,因此我会在其他地方搜索一个我认为可以的问题,但我没有更多的线索…我认为原因是您没有在
$watch
中使用第三个参数。。。因为它是您正在监视的对象,所以必须使用
$scope.$watch('test',function(newVal,oldVal){…},true)我很笨,我没有看到第一个有不同的
$scope.test
…没问题;)奇怪的是,这是第二个,而不是第一个。谢谢你的帮助。我发现了如何解决我的另一个问题,但我仍然不明白为什么它不起作用。。。它与对象一起工作,但与观察者从未被激发的文字一起工作。