角态state.go与相同的州.Params

时间:2017-03-20 15:08:55

标签: angularjs

我有一个角度应用,我使用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,因此角度按预期工作。

1 个答案:

答案 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;
  });
})