2016-01-22 66 views
0

我試圖只在dbReadyDeferred解決時加載這個視圖。

dbReadyDeferred定義別的地方(jQuery是可用)在common.js:

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) { 
... 

但視圖不加載。你能幫忙嗎?

回答

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; 
     }] 
    } 
    }); 
+0

可能,如果你的解決方案是基於我的你也請接受我的嗎? – Daniel

+0

嗨@丹尼爾,我不認爲我可以選擇兩個答案,我可以嗎?謝謝你的幫助。我選擇添加一個答案,因爲我播放了一個事件。但我們可以編輯您的答案並選擇您的答案沒有問題。 – Louis

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/

也許你的延期不會得到解決?