我正在编写一个有点复杂的 angularjs 应用程序。我发现我的主控制器模型实际上应该由几个对象组成,这些对象是其他控制器将使用的自包含函数。这通常不是问题,但这些对象需要能够判断属性何时更新。我想我会将 $scope 传递给模型对象,它可以这样调用 $watch 函数:
function MyCtrl($scope){
$scope.myModel = new MyModel($scope);
//Do Ctrl Stuff
}
function MyModel($scope){
$scope.X = 2;
$scope.Y = 3;
$scope.$watch('Y', function(oldVal, newVal){
//do something important
});
}
当 MyCtrl 更改 $scope.myModel.Y 的值时,没有任何反应。事实上,MyModel 似乎需要像 $watch('myModel.Y'...想要将逻辑抽象为可以使用的函数是很常见的,但谷歌搜索在这里似乎没有帮助我。MyModel 实际上是一个大小合适的模块,我希望在其他情况下使用它时尽可能保持 DRY控制器。这里的最佳实践是什么?
谢谢!