我称之为:
$state.go("main.projects.selected.dates.day", { id: $state.params.id }, {reload: true});
我真的想将state.go函数中的自定义数据传递给stateChangeStart函数。这可以通过状态参数 - 我可以滥用来接受日期对象 - 然后我的网址将无法正常工作...
如何将state.go中的数据传递给stateChangeStart?只是通过黑客攻击rootScope.customData属性?
$rootScope.$on('$stateChangeStart', function (ev, toState, toParams, fromState, fromParams, injectCustomFactory here)
{
// Run custom logic here on the injected custom factory
// then change the toParams.customData property by assigning the injected value to this property.
}
为什么我必须在你可能会问的stateChangeStart中运行这个逻辑。
因为只有在那里我可以检查用户是否主动更改了网址($ rootScope.customData然后是假的)或者state.go是从外部完成的,然后我执行$ rootScope.customData = MyValueLogic;
答案 0 :(得分:2)
在跑步中(或在您正在观看$stateChangeStart
的任何地方)注入它:
angular.module('lalala').run(function ($rootScope, factory) {
$rootScope.on('$stateChangeStart', function (e, toState, ...) {
factory.doSomething();
});
});