我有一个使用$state.go('state_name', stateParams)的角度应用程序。
触发state.go事件的按钮在页面上总是可用的,而url则根据stateParams进行更改。
在我将相同的stateParams对象传递给$state.go之前,一切都是完美的。在这种情况下,什么都不会发生。看起来像角比较stateParams在url和stateParams对象,我传递给state.go,什么都不做,因为值是相同的。我期望$state.go执行相同的操作,就像当我用不匹配url的值传递状态params对象时一样。
我知道这可以用$state.go('state_name', stateParams, {reload: true})解决,但在我的例子中,这是我并不真正需要的,因为它重新加载了我的应用程序中不需要重新加载的部分。
任何人都可以告诉我,如何使用相同的state.go stateParams 对象调用,而不需要重新加载: true,所以角按预期工作。
发布于 2017-03-20 16:06:31
根据注释,这里有一个代码片段,看起来可以做您想做的事情。如果你在一个链接中点击,它总是会进入那个状态,即使你在那里有相同的参数:
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;
});
})https://stackoverflow.com/questions/42907184
复制相似问题