我正在尝试使用 Angular 在 Controller 之间共享一些信息。我知道这并不是一件太难的事情,我在这里找到了一些很好的例子,但是我在如何引入和更改我试图共享的数据方面遇到了一些奇怪的情况。我尝试应用我发现的一些其他示例来使其发挥作用,但似乎无法使其发挥作用,因此我将尽力解释清楚。
问题
我想做的事情非常简单。我有一些下拉值试图在 Controller 之间共享。因此,无论它在着陆时具有什么值并已填充,以及当它发生变化时,都将显示在另一个 Controller 中。
问题是我已经建立了一个大工厂,所有 Controller 都调用它来填充它们的输入,有 10 个 Controller ,每个 Controller 都有一堆在着陆时必须填充的输入,所以我有一个工厂$q.all 函数用于存储在 vars 中的每个 $http 调用,然后是一个 .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])
}
然后在 Controller 中我执行以下操作:
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
};
所以我想做的就是与另一个 Controller 共享该 Controller 上 2 个选择列表的值。我得到了这个例子 - http://jsfiddle.net/HB7LU/6510/ 。但我似乎不知道如何将其应用到我正在做的事情中。主要是因为数据是在需要共享数据的 Controller 外部确定的。我试图避免这种情况,但如果这是最好的方法,那么我可能应该改变它。
我希望填充输入,获取默认值,然后与 Controller 共享信息(并在信息发生变化时共享)。如果我可以做类似于 2 路数据绑定(bind)所做的事情,但是在 Controller 之间,那么我正在提供的 Controller 总是提供选择列表答案的信息,这将是理想的。我在这个问题上挣扎了一段时间,它应该很容易,我想我只是错误地思考它。任何方向将不胜感激。感谢您花时间阅读!
最佳答案
不确定这是否是您正在寻找的,但创建一个“服务”并从其他 Controller 监听它可能会派上用场。这里提到了类似的事情: https://stackoverflow.com/a/19469131/2658127
您可以更改 <input>
随心所欲。
关于javascript - Angular , Controller 之间共享(填充后?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25977505/