当路由参数更改时,工厂中的角度火更改引用
AngularFire change reference in factory when routeParameter changes
我目前正在开发一个带有Firebase(使用angularFire)的角度应用程序,许多工厂都提供Firebase阵列和对象。
每当路由参数"element_id"发生变化时,我需要在会话中多次更改所有工厂的引用,但 angularjs 在首次调用后加载所有工厂,并且我看不到在此初始调用后更新引用的方法。
我尝试使用
$route.reload();
什么也没改变,而且
$window.location.reload();
这要么导致错误 404,因为此页面在 HTML5 模式下不可用 localhost:8000/element1 不存在,要么在不使用 html5 模式时在没有我element_id的情况下将我带回 localhost:8000。
这是我的工厂之一,我的根火力基地工厂:
app.factory("fireroot", function(){
var reference = new Firebase("https://mybase.firebaseio.com");
return reference;
});
app.factory('core_data', function($firebaseObject, fireroot, $routeParams) {
var reference = fireroot.child("elements").child($routeParams.element_id).child("core-data");
var core_data = $firebaseObject(reference);
return core_data;
});
非常感谢您的帮助,多亏了这个社区,我才完成了过去几年的编码,终于到了积极参与:)的时候了。
开始参与的好时机!
不要在工厂中注入$routeParams
。在控制器内部使用它,或者更好的是,在路由器内部使用它。
尝试从 core_data
工厂返回一个函数,该函数可以基于 id 构造$firebaseObject
。
然后在路由中的 resolve 对象中,您可以访问$routeParams
并构造一个$firebaseObject
。然后你可以返回$loaded()
承诺,这样 Angular 将在解决承诺时加载视图。
现在您的控制器非常薄,因为配置为您完成了困难的部分。
angular.module('app', ['ngRoute', 'firebase'])
.factory('coreData', CoreDataFactory)
.controller('MyCtrl', MyController)
.config(ApplicationConfig);
function CoreDataFactory($firebaseObject, fireroot) {
return function(id) {
var ref = fireroot.child("elements").child(id).child("core-data");
return $firebaseObject(ref);
}
}
function ApplicationConfig($routeProvider) {
$routeProvider.when('/path/:element_id', {
controller: 'MyCtrl as ctrl',
view: 'view.html',
resolve: {
data: function(coreData, $route) {
return coreData($route.current.params.element_id).$loaded();
}
}
});
}
function MyController(data) {
this.coreData = data;
}
如果您想知道,格式来自 角度样式指南.
相关文章:
- 引用对象中的通用值
- 如何在JavaScript中将字符串转换为函数引用
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- Emberjs应用程序加载在除Index之外的所有路由上
- 正在使用$location.path(.)路由ng视图
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 在动态创建的元素上获取对特定选择器的引用
- IIFE中的函数引用不可用
- 如何通过引用var Using DataTables来进行分页或排序
- 如何在创建键时引用来自同一对象的键
- Datatables:通过DOM数据源中的名称引用列
- 自引用回调
- 引用类变量中的原型方法
- 无法获取属性'selectedIndex'的未定义引用或null引用
- Vanilla JS通过引用移除数组元素
- 通过引用传递JavaScript对象
- 当路由参数更改时,工厂中的角度火更改引用
- 主路由器在路由“”的末尾附加一个#"导致dom中引用锚点在Backbone/Require应用程序中不起作用
- Node.js AJAX路由在评估引用的函数之前返回数据
- 如何在backbone.js中将视图/模型的引用传递给其他视图/模型/路由?