2015-06-25 151 views
0

我正在使用角度ui路由器的網站上工作。有一個頁面需要傳遞一些參數到另一個視圖。我定義我的狀態是這樣的:角ui路由器視圖加載但沒有傳遞參數

.state('locaties', { 
      url: "/locaties", 
      data: {rule: function($cookieStore) {} }, 
      controller: "FranchisesCtrl", 
      templateUrl: "view/locaties.html" 
     }) 
      .state('locaties.detail', { 
       params: { 
        locatieID: 1, 
        locatieName: "Derptown", 
        locatieLat: 50, 
        locatieLong: 50 
       }, 
       url: "/:locatieName", 
       controller: "LocatieDetailCtrl", 
       templateUrl: "view/locatie.html", 
       resolve: { 
        locatiedetail: 
         function ($stateParams, $http){ 
          var url ="http://website/api/franchises/" + $stateParams.locatieID + "/nl.json"; 
          return $http.get(url).then(function(res){ 
           return res.data; 
          }); 
         } 
       } 
      }) 

內LocatieDetailCtrl有這個

angular.module('PremiumMeat').controller('FranchisesDetailCtrl', 
    function ($scope, $window, franchisedetail) { 
    $scope.franchiseDetail = franchisedetail; 
    }); 

的「Locaties」(複數)查看正常工作,當我點擊一個特定的「locatie」(單)時, url更改和視圖在locaties視圖中加載,並且不傳遞任何參數。在圖像上,您可以看到「locaties」視圖中的前兩項。然後在「locaties」視圖下加載一個位置。這應該是一個新頁面(查看)與點擊位置的參數。任何人都可以幫我/解釋一下,我對棱角很陌生,謝謝。

views

+0

你可以發佈模板? – Panchitoboy

回答

0

其中硬編碼的參數,根據angular docs使其動態,語法需要調整。

params: { 
        locatieID: {value : "1"}, 
        locatieName: {value : "Stad"}, 
        locatieDescr: {value : "Beschrijving"}, 
        locatieLat: {value: 51.2}, 
        locatieLong: {value : 4.4} 
       }, 

凡參數與UI的HREF通過這樣

<a ui-sref="locaties.detail({ 
       locatieID: item.id, 
       locatieName: item.name, 
       locatieDescr: item.description, 
       locatieLat: item.location[0].lat, 
       locatieLong: item.location[0].long 
      })" 
      class="detail">Bekijk detail >></a> 
0

定義應該返回鍵 - 值對物體的「PARAMS」。

但是,如果您將值從一個狀態傳遞到另一個狀態以使用「數據」而不是在URL中追加所有內容,這是一種更好的做法。

下面的代碼應該工作:

//The following values are default values of the parameters 
.state('locaties.detail', { 
       params: { 
        locatieID: '1', 
        locatieName: 'Derptown', 
        locatieLat: '50', 
        locatieLong: '50' 
       }, ........ 

這應該工作。預期的值是字符串類型而不是數字。就你的LocatieDetailCtrl而言,你需要注入你在'locaties.detail'狀態(即'locatiedetail')的解析中所擁有的東西。所以你的'LocatieDetailCtrl'應該看起來像如下:

angular.module('PremiumMeat').controller('FranchisesDetailCtrl', 
    function ($scope, $window, franchisedetail, locatiedetail) { 
    $scope.franchiseDetail = franchisedetail; //make sure you have franchiseDetail as well. 
    $scope.locatiedetail = locatiedetail; 
    }); 

我希望這會工作。