内部控制台返回length的值,但外部控制台返回未定义的值。请让我知道我缺少的地方。 listFetch是一项服务。
.controller('list', function($scope,$routeParams,listFetch){
$scope.listCurrent={};
$scope.id=$routeParams.id;
var listNumber,len;
listNumber='list'+$scope.id;
listFetch.getList().success(function(data) {
$scope.listCurrent = data[listNumber];
console.log($scope.listCurrent.length);
});
len=$scope.listCurrent.length;
console.log(len);
});
`
答案 0 :(得分:1)
listFetch.getList()
是一个异步函数,这意味着它只会在片刻之后为您提供结果。但你马上就要求它(在“外部”控制台日志中)。
你可以这样做:
$scope.$watch('listCurrent', function () {
len=$scope.listCurrent.length
console.log(len);
}
小问题: $scope.$watch
也会在控制器初始化时运行,而$scope.listCurrent
实际上是undefined
。要考虑它,您可以这样做:
$scope.$watch('listCurrent', function (newVal, oldVal) {
if (newVal !== oldVal) {
len=$scope.listCurrent.length
console.log(len);
}
}
(在第一次观看时,旧值和新值都未定义,以后不会发生;)
答案 1 :(得分:0)
我在angularJS中使用了jQuery,然后在控制器内部调用服务:
listFetch.getList().success(function(response){
$scope.sliders = response.data;
});
console.log($($scope.sliders).length);
返回数组的长度。
使用此声明在index.html中声明angularjs之前的jquery。
我希望这会有所帮助。