在AngularJS中执行`ng-view`之前预加载数据和HTML

时间:2016-01-23 11:52:19

标签: angularjs angular-routing

在我的应用中,我喜欢整合ng-view的内容。基本上,在用户点击链接后,我想停止ng-view upto:

  1. 加载页面所需的所有数据
  2. 加载所有数据后,创建必要的DOM元素
  3. 然后,让em ng-view执行。到目前为止,让我显示pre-loader图标或一些消息说'wait..`

    这样做的正确方法是什么?

    目前没有任何想法,我使用这样的路线。

    $routeProvider
                .when ("/issueDetails", {
                    templateUrl : "views/issueDetails/issueDetails.html",
                    controller  : "issueDetailsController",
                    className   : "body-issueDetails",
                    resolve: {
                      // I will cause a 2 second delay
                    delay: function($q, $timeout) {
                        var delay = $q.defer();
                        $timeout(delay.resolve, 2000); //delaying 2 sec.
                        return delay.promise;
                      }
                    }
            });
    

    但它并没有产生如此好的结果。有人告诉我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

如果我正确理解你,这应该发生在你视图中的html中。

ng-include

或者只是将它们放在不同的文件中并使用 function ShowNewMessages(res, curr, end) { // build the front end var newdiv1 = "<div class=\"message\"> <div class=\"own-avatar-message\" style=\"background-image: url("+res[curr][4].replace(/\\\//g, "/")+");\"></div><div class=\"own-message2\"><div class=\"own-message\"><p>" + res[curr][3] +"</p></div><div class=\"message-timestamp\"> "+ res[curr][1] +" • "+res[curr][2] +"</div></div> </div>"; $( newdiv1 ).insertAfter( $( ".message" ).last()); var height = 0; $('.message').each(function(i, value){ height += parseInt($(this).height()); }); height += ''; $('div').animate({scrollTop: height}); // check if there is another messsage or checkagain for new messages curr++; if (curr <= end) ShowNewMessages(res, curr, end); else {setTimeout(function() {GetNewMesssages()}, 10000);} } function GetNewMesssages() { $.ajax({ type:'POST', url: "../lib/GetMesssage.php", data: "friend=" + MsgFriend, dataType: 'json', async: false, success:function(data){ // check error state if (data[0] != "Error") { var start = 0; var end = data.length-1; // minus one for the new line if (end > 0 ) ShowNewMessages(data, start, end-1); else setTimeout(function() {GetNewMesssages()}, 10000); } else alert('some error message'); } }); }

也许我是误会,但我不明白为什么你需要推迟观点。也许如果你能解释为什么这对你不起作用,我会更好地了解如何提供帮助。