这是我的控制器:
(function () {
var app= angular.module('app');
app.controller('recommendedJobsCtrl', ['$scope', function(dataShare,$q,$scope, $ionicSideMenuDelegate,$window,$http,$timeout) {
// passes contents to jobDetails to be rendered and displayed
window.post = function($event, res){
console.log(angular.element($event.target).parent());
dataShare.sendData(res)
}
/**
* handles pagination
*loads first 3 pages
**/
var i=1;
window.result=[];
window.noMoreItemsAvailable=false;
window.loadMore = function()
{
console.log('here')
if(i<4)
{
$http.get( "http://test.website.com/api/search/"+i).success(function(response)
{
i++;
$scope.result=$scope.result.push(response);
console.log(response);
$timeout(function ()
{
$scope.result = response
});
$scope.$broadcast('scroll.infiniteScrollComplete');
});
}else
{
$scope.noMoreItemsAvailable=true;
}
}
]);
}());
我读到我的控制器处于"用户严格"之下,因此它无法访问变量或函数。所以我放了"窗口"这个词,让它全球化。但现在它无法访问该功能,因为控制台不会打印。我该如何解决这个问题?
依赖注入不正确:
app.controller('recommendedJobsCtrl', [
'dataShare',
'$q',
'$scope',
'$ionicSideMenuDelegate',
'$window',
'$http',
'$timeout',
function(
dataShare,
$q,
$scope,
$ionicSideMenuDelegate,
$window,
$http,
$timeout) {
// Your code ...
}]);
代码应特定于控制器。您应该像$scope.<functionName> = function() {}
和$scope.noMoreItemsAvailable
那样在$scope
上创建函数和变量,或者在function <functionName>() {}
或var noMoreItemsAvailable
中对控制器私有
如果使用window
对象的意图是跨控制器使用相同的代码,则可以将此代码放在factory
中。