【问题标题】:angular usage of $location in directive repaints all other directives指令中 $location 的角度使用会重绘所有其他指令
【发布时间】:2018-01-27 04:12:48
【问题描述】:

我有一个使用多个指令的页面:

<section class="start_page page--no-vcenter">
        <u-search>
            <u-search-form></u-search-form>
            <u-news-form></u-news-form>
            <u-search-pane></u-search-pane>
        </u-search>
        <u-news>
            <u-news-pane></u-news-pane>
        </u-news>
    </u-search>
</section>

当我使用使用 $location 并在其中一个指令中设置 search() 参数的服务时,所有指令都会重绘。

return $location.search(obj);

如何避免重新绘制其他指令?

我正在使用 Angular 1.2.28。

【问题讨论】:

  • 你想在这里实现什么?
  • 当 search-form 指令中的某些过滤器发生更改时,我想在 url 中设置参数:url?foo=baz
  • 但没有重新绘制会导致 api 调用的新闻指令
  • 所以你在&lt;u-search-form&gt; 中更改$location.search() 参数,但&lt;u-news-form&gt;&lt;u-search-pane&gt; 也刷新?您是否也在这些子指令中使用$location
  • 是的,我在&lt;u-search-pane&gt; 中使用$location。我注意到整个部分都重新加载了。

标签: angularjs


【解决方案1】:

解决方案非常简单,因为我只更新了 search() 部分。查询参数。

这里可以使用

$routeProvider.when('/somewhere', {
    controller: 'SomeCtrl',
    reloadOnSearch: false
})

我猜当改变路径时它会更复杂。

github上的issue是这样的:https://github.com/angular/angular.js/issues/1699

我在这个答案中找到的解决方案: https://stackoverflow.com/a/17606908/541949

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多