在AJAX调用之前调用的Angular指令填充数据

时间:2015-07-07 15:30:20

标签: angularjs pug directive

我目前在使用指令时遇到问题,而在指令试图访问它们时,未设置父控制器中设置的某些范围值。这是因为在AJAX调用返回任何数据之前调用该指令。有没有让我的指令等待这个数据在继续之前设置?

这是我的指示:

return {
                restrict: 'E',
                //scope: {},
                templateUrl: window.baseUrl + '/template-common/directives/blurGallery',
                // -------------------------------------------------------------
                link: function(scope, element, attrs) {

                    var $gallery = $('body').find('.the-gallery'),
                        $item = $gallery.find('.preview-content');

                    console.log($scope.tasks);

                    scope.gallery = {

视图(玉)代码:

blur-gallery(gallery-items)

控制器代码:

//Get task details
                PPTaskService.loadTaskDetails($scope.theTaskId)
                    .then(function(response) {
                        $scope.task = new TaskWrapper(response);

                        $scope.isDataLoaded = true;
                    });

正如您所看到的,控制器要求服务检索数据并设置$ scope.task变量,但指令在返回之前尝试访问它(正如您在console.log中看到的那样)。

由于

1 个答案:

答案 0 :(得分:2)

在指令中,使用argumentsscope.task上的scope.$watch()可在数据可用时收到通知。从那里继续执行你的指令逻辑。

例如:

scope.isDataLoaded