我有一个角度应用,我使用this.context.store
。
触发$state.go('state_name', stateParams)
事件的按钮始终在页面上可用,而网址会根据state.go
更改。
在将同一个stateParams对象传递给stateParams
之前,一切都很完美。在这种情况下,一切都没有发生。看似角度比较网址和$state.go
对象中的stateParams
,我传递给stateParams
并且没有做任何事情,因为值是相同的。我希望state.go
执行相同的操作,就像我使用与url不匹配的值传递state params对象时一样。
我知道这可以通过$state.go
解决,但在我的情况下,这是我真正不需要的,因为它重新加载了我不需要重新加载的应用程序的某些部分。
有人可以建议我如何在没有重新加载的情况下使用相同的$state.go('state_name', stateParams, {reload: true})
对象调用state.go
:true,因此角度按预期工作。
答案 0 :(得分:1)
根据评论,这里有一个代码片段似乎可以做你想要的。即如果你点击一个链接它会一直进入那个状态,即使你在那里有相同的参数:
myApp.config(function ($provide) {
$provide.decorator('$state', function ($delegate) {
// let's locally use 'state' name
var state = $delegate;
// let's extend this object with new function
// 'baseGo', which in fact, will keep the reference
// to the original 'go' function
state.baseGo = state.go;
// here comes our new 'go' decoration
var go = function (to, params, options) {
options = options || {};
// only in case of missing 'reload'
// append our explicit 'true'
if (angular.isUndefined(options.reload)) {
options.reload = true;
}
// return processing to the 'baseGo' - original
this.baseGo(to, params, options);
};
// assign new 'go', right now decorating the old 'go'
state.go = go;
return $delegate;
});
})