我是angularjs世界中的新蜜蜂。我试图在我的代码中使用一些分页逻辑。
在使用$ watch时,我的应用会在$ watch
上投掷TypeError: undefined is not a function
.controller("EmployeeListCtrl", ["employeeResource", EmployeeListCtrl]);
function EmployeeListCtrl(employeeResource) {
var Empdata = this;
Empdata.employeePerPage = [];
employeeResource.query(function(data){
Empdata.employee = data;
});
Empdata.currentPage = 1;
Empdata.numPerPage = 10;
Empdata.maxSize = 5;
Empdata.numPages = function() {
return Math.ceil(Empdata.employee.length / Empdata.numPerPage);
};
Empdata.$watch('Empdata.currentPage + Empdata.numPerPage', function() {
var start = ((Empdata.currentPage - 1) * Empdata.numPerPage),
end = start + Empdata.numPerPage;
Empdata.employeePerPage = Empdata.employee.slice(begin, end);
});
}
因为我使用控制器作为我没有使用$ scope,也许情况会是这样的?
对使用$ scope vs controller作为有什么意见吗? 因为我们就这个 什么是推荐 <范围或控制器
答案 0 :(得分:0)
$watch
是$scope
的一种方法,所以这就是你的问题。解决方案是注入$scope
,以便您可以在对象上使用$watch
函数。请参阅此问题和答案:Angularjs: 'controller as syntax' and $watch
答案 1 :(得分:0)
Empdata
不是Angular对象,它没有$watch
方法。您需要将其设为控制器$scope
的属性。
$scope.Empdata = {};
$scope.$watch('Empdata.currentPage + Empdata.numPerPage', function() { ... });
答案 2 :(得分:0)
每当您想在使用controller as
时使用$ watch时,您需要使用angular.bind
<强> CODE 强>
$scope.$watch(angular.bind(Empdata, function () {
return 'Empdata.currentPage + Empdata.numPerPage';
}), function (newVal, oldVal) {
// now we will pickup changes to newVal and oldVal
});
由于