2016-06-01 56 views
1

我試圖用參數實現角js $ state.go()。但是$ state.go()可以在沒有參數的情況下正常工作。但有了參數,它不起作用。我已經嘗試過很多例子,但沒辦法。我需要在HTML視圖中顯示參數。 我的狀態提供商,

$stateProvider 
    .state('home', { 
     url: '/', 
     views: { 
      '[email protected]': { 
      templateUrl: 'content.html', 
      controller: 'dashCtrl' 
      } 
     }, 
    params: { 
     obj: { 
      value:'' 
     } 
    } 
     }); 

和控制器,

 dashboard.controller('dashCtrl', function ($scope, $http, $state, $stateParams){ 
       $state.go('dash_home', {obj: {value:'admin'}}); 
}); 

和我的DIV是

<div> 
    <h1>welcome : {{value}} || {{obj.value}}</div> 

是什麼問題?

+0

你正在顯示'home'狀態並試圖進入'dash_home'這是一個完全不同的狀態,甚至沒有'家的孩子狀態' –

+0

家是我目前的狀態和dash_home是我想要的狀態要重定向 – jicks

回答

1

,我發現我的錯誤。正確的代碼,

$stateProvider 
    .state('home', { 
     url: '/', 
     views: { 
      '[email protected]': { 
      templateUrl: 'content.html', 
      controller: 'dashCtrl' 
      } 
     }, 
    params: { 
      value:'' 
    } 
     }); 

控制器,

dashboard.controller('mycontroller',function($scope, $http, $state, $stateParams){ 

    $scope.user=$state.params.registerData; 

    $scope.redirect=function() 
    { 
     $state.params.registerData='mycontent'; 

     $state.go('dash_home', {registerData:$state.params.registerData}); 
    } 

}); 

感謝所有。

2

您不能直接在HTML中使用參數。您首先必須將其添加到範圍(如果使用該範圍,則爲虛擬模型),例如

$scope.obj = $state.current.params.obj 

而且你必須這樣做,在該州的控制器,你要當然不是那些你調用$ state.go

+0

請給我一個例子。 – jicks

+0

我不太確定你的意思。你重定向到'dash_home'狀態。所以如果這個狀態有一個控制器,那麼你只需要使用我的答案中的示例將狀態參數映射到範圍。問題在於角度無法呈現數據,因爲它不知道它。你必須通過將其添加到範圍來告訴它。 –

+0

我沒有看到你打電話給你的函數,而且你的state.go使用了不存在的狀態。也許你的意思只是'回家'在那裏?否則,你將不得不添加適當的狀態。 –

0

我猜你不能使用對象PARAMS。只需更換

params: { 
    obj: { 
     value:'' 
    } 
} 

這樣:

params: { 
     value:'' 
} 

也:$state.go('dash_home', {obj: {value:'admin'}});$state.go('home', {value:'admin'});

+0

我試過但不工作。 – jicks

+0

你能提供一個小提琴嗎? –

+0

你在開玩笑嗎?您提供了語法錯誤的小提琴,並且沒有任何添加的腳本。再加上你使用'$ state.go'('dash_home')'但是正如我和@Alon Eitan所寫的:'$ state.go('home')' –