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

标签 angularjs pug directive

我目前遇到一个指令问题,而当指令尝试访问父 Controller 中设置的某些范围值时,这些值并未设置。这是因为该指令是在 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 = {

查看( Jade )代码:

blur-gallery(gallery-items)

Controller 代码:

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

                        $scope.isDataLoaded = true;
                    });

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

谢谢

最佳答案

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

例如:

scope.$watch('isDataLoaded', function(newValue, oldValue) {
    if (newValue === true)
    {
        /* do stuff with data */
    }
});

关于angularjs - 在 AJAX 调用填充数据之前调用 Angular 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31273008/

相关文章:

javascript - Chai 将错误记录到控制台而不是测试失败

javascript - JS 文件未与 Pug 链接

visual-studio-code - Pug "input"的 Emmet 缩写正在插入不需要的 #

angularjs - ng-repeat 只显示最后一个值

javascript - 如果我只有两个 if 条件,我该如何制定指令? - Angular Js

javascript - AngularJS ng-click 不触发

angular - 为什么将空字符串设置为空 react 形式成为空字符串

javascript - 如何在 Angular 或jquery中的嵌套div中的所有标签上添加事件

javascript - Angularjs动态添加 Controller

javascript - &lt;script&gt;document.write ('<base href="' + document.location + '"/>');&lt;/script&gt;