$ routeprovider,使用延迟变量解析

时间:2016-01-22 10:00:28

标签: jquery angularjs deferred

我正在尝试仅在解析dbReadyDeferred时加载此视图。

dbReadyDeferred在common.js中的其他地方定义(JQuery可用):

var dbReadyDeferred = $.Deferred();

view1.js:

'use strict';

angular.module('myApp.view1', ['ngRoute'])

.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/view1', {
    templateUrl: 'view1/view1.html',
    controller: 'View1Ctrl',
    resolve: dbReadyDeferred.promise
  });
}])

.controller('View1Ctrl', ['$scope', function ($scope) {
...

但是视图没有加载。你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

我不确定你的解决方案出了什么问题,但我为你做了一个小小的工作:

  $stateProvider.state('home', {
    url: "",
    views: {
        'main': {
            template: '<div>go! {{message}}</div>',
            controller: function ($scope) {
                $scope.msg = "loaded main!";
                console.log("ctrl here!");
            }
            }
    },
    resolve: {
      app: function ($q, myService) {
        var deferred = myService.getDeferred();
        return deferred.promise;
      }
}
});

https://jsfiddle.net/zn8xdLnw/2/

也许你的延期不会得到解决?

答案 1 :(得分:0)

好的,这对我有用:

  $routeProvider.when('/view1', {
    templateUrl: 'view1/view1.html',
    controller: 'View1Ctrl',
    resolve: {
         dbState: ['$rootScope', '$q', function($rootScope, $q) {
               var promise = $q.when(dbReadyDeferred);
               promise.then(function() {
                   $rootScope.$broadcast("dbStateReady");
               });
               return promise;
         }]
    }
  });