2015-07-17 5 views
1

Моя цель достичь, это:Угловая UI-маршрутизатор решительность, HTTP успех, stateParams

первым, чтобы вставить новую запись в базе данных с HTTP POST, решить с stateProvider и захватить новый идентификатор и изменить вид и stateParams.

у меня есть этот код для моего HTTP почтовой службы

myApp.service('postService', ['$http', function($http) { 
this.insertNew = function() { 
    $http.post('create_new.php') 
    .success(function(data) { 
     return data; 
    }); 
}; 

create_new.php возвращает идентификатор, как это (он работает, доказанного с консолью)

return json_encode($data); 

и stateProvider выглядит следующим образом (раздел)

$stateProvider 
.state('newRecord', { 
    resolve: { 
     newArtID: ['postService', 
      function(postService) { 
       return postService.insertNew(); 
     }] 
    }, 
    params: { 
     artID: <-- new ID from DB 
    }, 

Я провел испытания с помощью stateParams в вариациях серваля (по разрешению и по параметрам АМС). как я могу принести новый ID в stateParams, так что я могу получить доступ к представлениям?

Спасибо за помощь!

+0

Во-первых, это похоже на плохую идею. Если вы хотите это сделать, вы можете создать абстрактное состояние выше newRecord, разрешить его там, затем $ state.go в дочернее состояние, которое имеет параметр – reptilicus

+0

. Я новый для углового и использую ui-router в первый раз , Я попробую ваше предложение. Спасибо – AtotheG

ответ

0

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

Услуги:

.service('postService', function ($http) { 
    this.insertNew = function() { 
     return $http.post('create_new.php').then(function (data) { 
      return data; 
     }); 
    } 
}) 

Маршрут:

$stateProvider 
     .state('newRecord', { 
      views: { 
       "main": { 
        controller: 'SomeCtrl', 
        templateUrl: '...' 
       } 
      }, 
      resolvedId: { 
       newArtID: function (postService) { 
        return postService.insertNew().then(function (response) { 
         return response; 
        }); 
       } 
      } 
     }) 

Контроллер:

.controller('SomeCtrl', function (resolvedId) { 
     var newID = resolvedId.id; //depending on what is returned 
    }); 
+0

Спасибо за вашу помощь. Между тем я сделал обходной путь, где работает. Но, возможно, я могу использовать это в другом проекте. – AtotheG

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