Angularjs:scope.data在指令中未定义

Angularjs:scope.data在指令中未定义,angularjs,Angularjs,首先,我从这个主题中找到了api地址: 现在我正在做这个,我的小剧本是这样的: var app = angular.module('kategori', [ 'ngResource', 'apiBaseRoute' ]); app.factory('Data', ['$resource', 'apiBaseRoute', function($resource, config){ return $resource('http://

首先,我从这个主题中找到了api地址:

现在我正在做这个,我的小剧本是这样的:

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>
它打印未定义的


我不明白为什么。我怎样才能解决这个问题?谢谢。

当JS到达您的
控制台。log
时,
allData
属性未定义(因为
kategoriList
未定义)
kategoriList
(因此,
allData
)将在稍后异步创建(并填充大量数据)

那么,为什么在记录
scope
对象时会看到数据呢

在记录对象时,它没有属性
所有数据(也没有数据)。
但是当您转到控制台并展开节点并查找
allData
属性时,该属性已经由AJAX调用添加和填充(使用
$resource


不清楚您想用
所有数据做什么

如果您想在例如
ng repeat
中使用它,您不必担心:您可以正常使用它(就像定义了它一样),Angular将在它到达后自动“拾取”并执行操作。
然而,如果你想(出于你自己的神秘原因)在它准备好时得到通知,你可以使用

scope.$watch('allData', function(newValue) {
    if (newValue !== undefined) {
        console.log(scope.allData);
    }
});

另外,请参阅此

谢谢您的回答,我正在尝试使用分页系统,我将使用当前页面,等等。。内部指令。我看到的数据通常没有指令,如你所说的ng repeat,但我无法将数据传输到指令中。好的。但这并没有说明您计划如何使用
allData
。如果您遇到任何问题,请发布相关代码。顺便说一句,如果这篇文章回答了你的问题,请将其标记为“已接受”。我会创建两个变量,其中一个变量只包含页面中显示的数据。其他将包含来自laravel的分页数据。对于分页数据(页面、当前页面、最后一页、总页面等),allData是可变的。您不应该遇到任何困难。不过,如果遇到问题,请发布一个新问题,提供相关代码。
scope.$watch('allData', function(newValue) {
    if (newValue !== undefined) {
        console.log(scope.allData);
    }
});