2016-01-24 38 views
1

我正在嘗試創建一個Angular.JS計算器,如果某個工廠的數據對象爲空,它將返回到根頁面。我的問題是,我不知道如何訪問Data.Terms對象,以查看它是否在/condition路徑下的$routeProvider配置中爲空。

在我下面的代碼中,表示if (!Data.Terms)的部分不起作用。我希望它返回存儲在工廠數據功能條款的價值:

// Creating the module 
var myApp = angular.module("app-calculator", ["calculatorControls", "ngRoute"]) 
    .config(function ($routeProvider) { 

     $routeProvider.when("/", { 
      controller: "termsController", 
      controllerAs: "vm", 
      templateUrl: "/content/templates/termsView.html" 
     }); 

     $routeProvider.when("/condition", { 
      controller: "conditionController", 
      controllerAs: "vm", 
      templateUrl: "/content/templates/conditionView.html", 
      resolve: { 
       mess: function ($location) { 

        // Check if the Data.Terms field has been completed, 
        // if not then return to the root path. 
        if (!Data.Terms) { 
         $location.path('/'); 
        } 
        // 

       } 
      } 
     }); 

// my Data 
myApp.factory('Data', function() { 
    var Terms = ''; 

    return { 
     Terms: Terms, 
    } 
}) 
+1

嘗試'混亂:功能($位置,數據){' – Claies

+0

這樣做的伎倆。謝謝Claies!將它發佈在答案中,我會將其標記爲已接受。 – Wellspring

回答

1

你應該注入Data爲您解決部分依賴。

var myApp = angular.module("app-calculator", ["calculatorControls", "ngRoute"]) 
    .config(function ($routeProvider) { 

     $routeProvider.when("/", { 
      controller: "termsController", 
      controllerAs: "vm", 
      templateUrl: "/content/templates/termsView.html" 
     }); 

     $routeProvider.when("/condition", { 
      controller: "conditionController", 
      controllerAs: "vm", 
      templateUrl: "/content/templates/conditionView.html", 
      resolve: { 
       mess: function ($location, Data) { 

        // Check if the Data.Terms field has been completed, 
        // if not then return to the root path. 
        if (!Data.Terms) { 
         $location.path('/'); 
        } 
        // 

       } 
      } 
     });