2015-07-30 3 views
0
.controller('CyclesController', function ($scope, $state) { 
    $scope.age = 0; 
    $scope.name = ""; 
    $scope.email = ""; 
    $scope.calculateByAge = function (age, name, email) { 
     $scope.data = $scope.data || {}; 
     if (age > 0) { 
      $scope.data.age = age; 
      $scope.data.name = name; 
      $scope.data.email = email; 
      $state.go('tab.cycles-detail'); 
     } 

    } 

}) 

.controller('CyclesDetailController', function ($scope, $stateParams, CyclesService) { 
    console.log('scope data', $scope.data); // <--- undefined. 
}) 

Это может быть глупый вопрос, но может получить данные из формы на контроллере CyclesDetailController.Передача данных с одного контроллера на другой в угловом

ответ

0

Если это простая собственность, вы можете сделать это путем маршрутизации. Просто измените «tab.cycles-detai» на «tab.cycles-detai /: age» в настройке ui-router и передайте его при перенаправлении: $ state.go («tab.cycles-detail», { возраст:});

доступа 'CyclesDetailController' его с $ stateParams.age;

например:

//app.config 
//... 

    .state('tab.cycles-detail', { 
        url: "^detail/{age:int}", 
        controller: 'CyclesDetailController', 
        templateUrl: "url_for_detail_template" 
       }) 

//... 

// CyclesController 

.controller('CyclesController', function ($scope, $state) { 
    $scope.age = 0; 
    $scope.calculateByAge = function (age) { 
     $scope.data = $scope.data || {}; 
     if (age > 0) { 
      $scope.data.age = age; 
      $state.go('tab.cycles-detail', {age: age); 
     } 

    } 
}) 

//CyclesDetailController 

.controller('CyclesDetailController', function ($scope, $stateParams, CyclesService) { 
    console.log('scope data', $stateParams.age); 
}) 

// 
+0

Мне нужно больше данных. Я упростил на примере –

+0

Я отредактировал ответ –

+0

Я отредактировал свой вопрос, в вашем ответе мне нужно включить шаблон url с параметрами? это не способ сделать это? –

0

Если вы хотите передать данные с одного маршрута на другой, но не хотят выставить его в строке меню браузера, вы можете использовать squash.

Пример -

.state('app.enroll', { 
    url: '/enroll/', 
    params: { 
     classId: { 
      value: null, 
      squash: true 
     }, 
     className: { 
      value: null, 
      squash: true 
     } 
    }, 
    title: 'Students Enrollment', 
    templateUrl: helper.basepath('enroll.html')   
}) 

второй Technique -

Вы можете использовать LocalStorage/куки, чтобы сохранить данные и получить на более позднем этапе.

третьего Техника -

Вы всегда можете обмениваться данными с помощью услуг/фабричных между контроллерами.

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