我有一个名为SearchDatatablesContactsCtrl的控制器,其定义如下:
function SearchDatatablesContactsCtrl($scope, $state, $stateParams, ...) {
$scope.controllerName = "SearchDatatablesContactsCtrl";
var vm = this;
vm.instanceName = "SearchDatatablesContactsCtrl_" + new Date().getTime();
vm.nameValues = {};
if ($stateParams.nameValues !== null && $stateParams.nameValues.personId != "") {
vm.nameValues.personId = $stateParams.nameValues.personId;
vm.nameValues.kindOfSearch = $stateParams.nameValues.kindOfSearch;
}
$scope.$watch(function(){
return vm.nameValues;
}, function(newValue, oldValue){
console.log("watch executed for " + vm.instanceName);
//http request to fill datatable
});
...
我的视图有树标签,每个表格使用通过$ stateProvider.state注入的SearchDatatablesContactsCtrl。当我使用ng-model附加到nameValues的文本字段搜索值时出现问题, 它运行3个http请求以获取数据表的值(每个实例一个)。
执行结果是:
watch executed for SearchDatatablesContactsCtrl_1462436421603
watch executed for SearchDatatablesContactsCtrl_1462436421703
watch executed for SearchDatatablesContactsCtrl_1462436422023
有没有办法强制控制器的实例只监视其范围的变化?
提前致谢