2016-04-18 5 views
0

Прежде чем состояние будет загружено, я хочу разрешить завод, используя данные с другого завода.Решите завод с результатом с другого завода

Моя ситуация:

"taskVariables": function (getTask, getTaskVariables, $stateParams) { 
     getTask.get({'task': $stateParams.taskId}).success(function(data) { 
     console.log("I'm here"); 
     return getTaskVariables.get({'processInstanceId': data.processInstanceId}); 
     }); 
     return false; 
     console.log("I have failed you master") 
    }, 

Фабрика:

.factory('getTask', function ($resource) { 
     return $resource('api/task/get/:task', {'user': '@user', 'task': '@task'}, { 
      'get': { 
       method: 'GET', 
       transformResponse: function (data) { 
        data = angular.fromJson(data); 
        return data; 
       } 
      } 
     }) 
    }) 

Дело в том, что я думаю, что один завод загружается быстрее, чем другие, таким образом, данные будут неопределенными при загрузке страницы, но это только я размышляю.

Есть ли способ достичь этого, возможно, с обещанием или каким-то видом?

Спасибо заранее,

ответ

0

Вы забыли вернуть первоначальный getTask обещание.

"taskVariables": function (getTask, getTaskVariables, $stateParams) { 
    return getTask.get({'task': $stateParams.taskId}).success(function(data) { 
     console.log("I'm here"); 
     return getTaskVariables.get({'processInstanceId': data.processInstanceId}); 
    }); 
}, 
+0

Спасибо за подсказку, к сожалению он не работает :( – Lobato

+0

Что не работает об этом? –

+0

Достигнув разрешающей фабрики, не возвращается ни успешное, ни неудавшееся состояние, оно не регистрируется – Lobato

1

Потому что я возвращаю $ ресурс Я не могу объявить успеш- ни функцию отказа, так что вы должны изменить его, давая ему $ обещания, за которым следует затем:

"taskVariables": function (getTask, getTaskVariables, $stateParams) { 
     return getTask.get({'task': $stateParams.taskId}).$promise.then(function(data) { 
       return getTaskVariables.get({'processInstanceId': data.processInstanceId}); 
     }); 
} 

В до this вопрос/ответ