Я пытаюсь поделиться некоторой информацией между контроллерами с угловыми. Я знаю, что это не слишком сложно сделать, я нашел здесь несколько отличных примеров, но у меня есть немного странный сценарий с тем, как я ввожу и меняю данные, которые я пытаюсь разделить. Я попытался применить некоторые другие примеры, которые я нашел, чтобы заставить это работать, но не может показаться, что это работает, поэтому я попытаюсь объяснить как можно яснее.угловой, обмен между контроллерами (после того, как он был заполнен?)
Проблема
То, что я пытаюсь сделать, это довольно прямо вперед. У меня есть некоторые значения выпадающих значений, которые я пытаюсь использовать между контроллерами. Таким образом, любое значение, которое оно имеет при посадке и было заполнено, и когда оно изменится, будет показано на другом контроллере.
Проблема в том, что я установил большую фабрику, из которой все контроллеры звонят, чтобы заполнить свои входы, есть 10 контроллеров, и у каждого есть куча входов, которые необходимо заполнять при посадке, поэтому у меня есть завод с функцией $ q.all для каждого из $ http-вызовов, хранящихся в vars, затем. then then, который вызывает другой вызов, чтобы увидеть, сохранены ли какие-либо данные и изменены значения по умолчанию на сохраненные значения. Я бы предпочел, если возможно, сохранить этот метод. Я использую его повсюду, и может быть больно изменить его.
Так завод выглядит следующим образом:
var criteria1 = $http({method: "GET", url: "/crit1"});
var criteria2 = $http({method: "GET", url: "/crit2"});
var criteria3 = $http({method: "GET", url: "/crit3"});
return {
critera: $q.all([criteria1 ,criteria2, criteria3])
}
В контроллере я тогда сделать:
getDefaults.criteria.then(function(data){
//fill out defaults and values for selects with this data
//then get saved data (if any)
$http({
method: "GET",
url: "/getsavedData/" + sectionID
})
.success(function(data, status, headers, config){
//if data !null then overrite scopes for defaults
};
Так что я пытаюсь сделать, это то делим значение 2 отдельных списков по этому вопросу контроллер с другим. Мне был предоставлен этот пример - http://jsfiddle.net/HB7LU/6510/. Но я не могу понять, как применить это к тому, что я делаю. В основном потому, что данные определяются за пределами контроллера, где ему необходимо обмениваться. Я пытаюсь избежать этого, но если это лучший способ, то я, вероятно, должен его изменить.
Я хочу, чтобы входы заполнялись, получали значения по умолчанию, а затем делили информацию с контроллерами (и делились, когда они менялись). Было бы идеально, если бы я мог сделать что-то похожее на то, что делает двухстороннее связывание данных, но между контроллерами, поэтому контроллер, который я кормлю, всегда загружает информацию о ответе выбора списка. Я немного боролся с этим, это должно быть легко, я думаю, что я просто думаю об этом неправильно. Любое направление было бы высоко оценено. Спасибо, что нашли время для чтения!
Почему вы не просто устанавливаете извлеченные данные в общедоступное свойство службы, и каждый из заинтересованных контролеров смотрит эти данные? –
Что-то вроде [this] (http://stackoverflow.com/questions/21452040/angularjs-sharing-methods-between-controllers/21452417#21452417), но вам нужно установить 'var msg = ...' на результат вашего $ q.all(). –
Рассматривали ли вы использование $ broadcast и $ on? [Ссылка] (https://docs.angularjs.org/api/ng/type/$rootScope.Scope) –