首先,我从这个主题中找到了api地址:Laravel 4和Angular JS和Twitter Bootstrap 3分页
现在我正在处理这个问题,我的小脚本是这样的:
var app = angular.module('kategori', [
'ngResource',
'apiBaseRoute'
]);
app.factory('Data', ['$resource', 'apiBaseRoute', function($resource, config){
return $resource('http://develop.alexei.me/careers/careers.php?callback=JSON_CALLBACK&page=:page', {
page: 1
}, {
'get': {
method: 'JSONP'
}
});
}]);
app.controller('KategoriListCtrl', function($scope, Data){
$scope.init = function() {
Data.get({}, function(response){
$scope.kategoriList = response.careers;
},function(error){
console.log("HATA VAR" + error);
});
};
});
app.directive('paginate', function(){
return{
scope:{ allData: '=paginate2' },
link: function(scope){
console.log(scope);
}
}
});
这是html端:
<div class="col-md-6 col-md-offset-3" ng-controller="KategoriListCtrl" ng-init="init()">
{{kategoriList}}
<div paginate paginate2="kategoriList"></div>
</div>
正如你所看到的,指令中的console.log(scope)在控制台中显示了很多东西,尤其是我在那里看到的allData有很多数据,但如果我把它改为
console.log(scope.allData)
它打印未定义的。。
我不明白为什么。我该如何解决这个问题?谢谢
当JS到达console.log
时,allData
属性未定义(因为kategoriList
未定义)。kategoriList
(以及因此allData
)在稍后异步创建(并且填充有大量数据)。
那么,为什么在记录scope
对象时会看到数据呢?
在记录对象时,它没有属性allData
(也没有数据)
但是当您转到控制台并展开节点并查找allData
属性时,该属性已由AJAX调用(使用$resource
)添加和填充。
不清楚您想用allData
做什么
如果你想在例如ng-repeat
中使用它,你不必担心:你可以正常使用它(就像它被定义的一样),Angular会在它到达并完成任务时自动"拿起它">
然而,如果您想(出于您自己的神秘原因)在它准备好时得到通知,您可以使用$watch
:
scope.$watch('allData', function(newValue) {
if (newValue !== undefined) {
console.log(scope.allData);
}
});
另请参阅简短演示。