2016-03-03 50 views
0

如何在AngularJS中更改selectbox內容時重新加載不同控制器的嵌套狀態?

我有2個選擇框1.Category和2.SubCategory

基於類別和子類別,產品將被顯示在內部狀態

類別和子類別addproducts狀態

下來產品進入添加產品狀態內的產品設置狀態

但我的問題是,當我選擇類別和子類別時,產品將顯示,這意味着

$state.go('addproducts.productsettings'); 

的工作,但都選擇後,當我只更改子類別選擇框也不會重裝產品狀態

$state.go('addproducts.productsettings'); 

將無法​​正常工作是不會加載在ProductSettingsController

這是後我的html代碼它包含兩個選擇框

<form> 
     <div class="form-group"> 
     <label for="exampleSelect1"><b>Category</b></label> 
     <select ng-model="selectedCategory" class="form-control" id="categories" ng-init="selectedCategory = null" 
     ng-change="onCategoryChange(selectedCategory)"> 
      <option value="">--Select--</option> 
       <option ng-repeat="(key,value) in categories | orderBy:'catName'| groupBy:'catName'">{{key}}</option>   
       </select>   
     </div>    
    </form>  
    <!-- ----------------------------------- --> 

    </div> 


    <div class="col-md-3"> 

    <!-- ----------------------------------- --> 
    <form>  
     <div class="form-group"> 
     <label for="exampleSelect1"><b>SubCategory</b></label> 
     <select class="form-control" id="subcategories" ng-model="selectedSubCategory" ng-disabled="!selectedCategory" 
     ng-options="categories.subCatName for categories in categories | filter: {catName:selectedCategory}" ng-change="getValue()"> 
      <option value="">--Select--</option> 
      </select> 
     </div>   
    </form>  
    <!-- ----------------------------------- --> 

    </div> 

這是我的js代碼

var appshop = angular.module('appShop', [ 'ui.router', 'angular.filter' ]); 

    appshop.config(function($stateProvider, $urlRouterProvider) { 

     $urlRouterProvider.otherwise('/category'); 

     $stateProvider.state('addproducts', 
     { 
      url : '/addproducts', 
      views : 
      {        
       'body' : 
       { 
        templateUrl : 'category/manageproduct.htm', 
        controller : 'AddProductController'    
       } 
      } 
     }) 

     .state('addproducts.productsettings', 
     { 
      url : '/productsettings', 
      views : 
      {        
       '[email protected]' : 
       { 
        templateUrl : 'category/productsettings.htm', 
        controller : 'ProductsSettingsController'    
       } 
      } 
     }) 

    }); 

    //========================================================== 

    appshop.controller('AddProductController',AddProductController); 

    function AddProductController($scope, $http,$state) 
    { 
     $scope.onCategoryChange = function(category) 
     { 
      if (!category) 
      { 
       $scope.selectedSubCategory = undefined; 

      } 
     } 
     var categoryPromise = $http.get("../rest/mcategory"); 
     categoryPromise.success(function(data, status, headers, config) 
     { 
      $scope.categories=data;   
     }); 

     categoryPromise.error(function(data, status, headers, config) 
     { 
      alert("Error");  
     });  

     $scope.getValue=function() 
     {  
      $state.go('addproducts.productsettings');  
     } 

    } 

    //========================================================== 

    appshop.controller('ProductSettingsController',ProductSettingsController); 

    function ProductSettingsController($scope,$http,$state) 
    { 
     alert("Clicked")//I need to get alert here 

    } 

這兩個選擇框來AddProductController

和產品在這些AddProductController嵌套的狀態時,它被命名爲ProductSettingsController下COMED

當我選擇這兩個類別和子類別它工作正常

但選擇後,只有改變的子類別它不會工作

任何當我選擇subcatname時獲取產品詳細信息的想法?我需要在ProductSettingsController點擊了警報,當我在子類別選擇框改變

+0

看到我的回答它的幫助桑迪普姬ü – Sandeep

回答

0

使用$ stateParams指在網址參數:看

HTML 子類別部分

<!-- ----------------------------------- --> 
    <form>  
     <div class="form-group"> 
     <label for="exampleSelect1"><b>SubCategory</b></label> 
     <select class="form-control" id="subcategories" ng-model="selectedSubCategory" ng-disabled="!selectedCategory" 
     ng-options="categories.subCatName for categories in categories | filter: {catName:selectedCategory}" ng-change="getValue(selectedSubCategory)"> 
      <option value="">--Select--</option> 
      </select> 
     </div>   
    </form>  
    <!-- ----------------------------------- --> 

JS 添加stateParams在子狀態

.state('addproducts.productsettings', 
     { 
      url : '/productsettings?:subitem', 
      views : 
      {        
       '[email protected]' : 
       { 
        templateUrl : 'category/productsettings.htm', 
        controller : 'ProductsSettingsController'    
       } 
      } 
     }) 

控制器

$scope.getValue=function(sub_item) 
{  
    $state.go('addproducts.productsettings', {subitem:sub_item});  
} 
+0

心很much.Kya海的工作給我你來自印度喀拉拉邦的郵件我非常感謝你的工作只有我更改網址:'/ productsettings /:subitem',只需改正它好吧謝謝你爲什麼沒有它不工作.. –

+0

[email protected] – Sandeep

0

嘗試:

$state.reload(); 

$state.go('addproducts.productsettings', {}, {reload: true}); 
相關問題