2016-03-03 4 views
0

Как позвонить ui-view с другого контроллера в AngularJS

Это моя программа-образец. Фактически здесь я использую вложенный ui-view. Проблема в том, когда я нажимаю кнопку отправки , изначально она отлично работает и показывает предупреждение. SampleController

Но опять же я щелкнул его, чтобы не получить SampleController, почему?

мне нужно идти к этому контроллеру, когда я нажимаю на кнопку отправить

ли какая-либо ошибка в моем code.Please проверить это мой stateProvider too.I я новый стартер в AngularJS

Plese поправьте меня Спасибо ...

var app=angular.module('TestApp', ['angular.filter','ui.router']); 
app.config(function($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.otherwise('/'); 
    $stateProvider 
     .state('category', { 
     views : { 
      "body" : { 
       url : '/category', 
       templateUrl : 'category.html', 
       controller : 'TestController' 
      } 
     }  
    }) 
    .state('category.subcategory', { 
     url : '/subcategory', 
     views : {        
      "[email protected]" : { 
       templateUrl : 'sample.html', 
       controller : 'SampleController'    
      } 
     } 
    }) 
}); 

app.controller('MainController', MainController); 
function MainController($scope,$state) { 
    alert("This is MainController") 
    $scope.getCategory=function(){ 
     $state.go('category'); 
    } 
} 

app.controller('TestController', TestController); 
function TestController($scope, $state){  
    $scope.getData=function() { 
     alert("Call to Sample Controller") 
     $state.go('.subcategory'); 
    } 
} 

app.controller('SampleController', SampleController); 
function SampleController($scope,$state) { 
    alert("This is SampleController") 
} 

Это мой пример HTML файлы
index.html

<!DOCTYPE html> 
<html ng-app="TestApp"> 

    <head> 
    <link rel="stylesheet"> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular-route.min.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-filter/0.5.8/angular-filter.js"></script> 
     <script src="angular-ui-router.js"></script>  
     <script src="script.js"></script> 
    </head> 
    <body ng-controller="MainController"> 
     <a href="#" ng-click="getCategory()">Click to Category</a> 
     <div ui-view="body"> 
      <div ui-view="subbody"></div> 
     </div> 
    </body> 
</html> 

category.html

<div>  
    <input type="button" name="button" id="button" value="Submit" ng-click="getData()" /> 
    <div ui-view="subbody"></div> 
</div> 

sample.html

<div> 
    Sample Controller 
</div> 

Мне нужно попасть SampleController, когда я нажмите кнопку Отправить

+0

Где '/' идти? –

+1

Уверен, что вам не нужно просто $ state.go ('category.subcategory'); вместо $ state.go ('. subcategory') ;? –

+0

Ваш код работает нормально, как вы настроили. Наверное, вы ищете некоторые другие функции. Можете ли вы подробно объяснить свой вопрос? –

ответ

0
this.$state.go(".subcategory", null, { reload : true }); 
+0

нет sir его не работает. В моем проекте, что часть кнопки отправки содержит две категории и подкатегорию категорий выбора. Основываясь на этом catgeory и подкатегории, мне нужно показать детали на SampleController. –

+0

Мне нужно обновить только обработчик образца –

+0

Хм, кажется, что вы должны переместить функцию getData в службу и заполнить поле данных, ввести службу в любой или все ваши контроллеры, привязать ui к полю данных в службе и попросите контроллер обновить данные службы. –

0

Я думаю, вы должны определить одну услугу и ввести в контроллер. Тогда есть шанс поработать.

Контроллер:

app.controller('TestController', TestController); 
 

 
function TestController($scope, mainService) { 
 
    $scope.getData = function() { 
 
    mainService.getDetails(); 
 
    //$state.go(.subcategory) //you can use here,If fails I have written in service(inject $state) 
 
    }; 
 
}

Услуги:

app.service('mainService', mainService) 
 
mainService.$inject = ['$http', '$state']; 
 

 
function mainService($http, $state) { 
 

 
    this.getDetails = function() { 
 
    console.log("Hai"); 
 
    $state.go(.subcategory); 
 

 
    } 
 
}

+0

Его работа прекрасна только один раз, когда вы нажмете еще раз кнопку отправки, он не может попасть в образец контроллер вы просто проверяете. В mu-коде тоже то же самое. Мне нужно, когда я нажимаю кнопку повторной отправки, мне нужно получить предупреждение '' Это образец контроллера '' 'Ashokji проверить это. Пожалуйста, помогите мне bhai –

+0

В сервисной функции вы uising UserService я ее исправляю mainService, но не работает ji –

+0

Вы только что скопировали мой код, чтобы затмить и запустить его, пожалуйста. Первоначально предупреждение поступает из SampleController, но снова я нажимаю на эту кнопку отправки. Я не мог получить это предупреждение. –

Смежные вопросы