首先,我从该主题中找到了api地址:
Laravel 4 and Angular JS and Twitter Bootstrap 3 Pagination

现在我正在为此工作,我的小脚本是这样的:

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);
    }
});

另请参见此 short demo

10-05 20:55