【问题标题】:AngularJS - Modular Search PageAngularJS - 模块化搜索页面
【发布时间】:2016-09-26 10:07:47
【问题描述】:

所以我一直在上网以了解或查看我想做的事情的示例。

这应该不难,但我只是缺少一些东西。

情景

我有一个搜索页面,由 2 个指令/ ui-views 构建而成,如下所示:

我想要实现的目标

当我按下Search时,我想触发Search Results指令/视图根据搜索表单参数获取相应的结果。

我被困在哪里

因为我有 2 个单独的指令,所以我可以让它们使用父控制器或我拥有的搜索服务(与后端通信)共享信息。
但是,search 指令可以将信息写入任何一个,但结果仍未触发。除非我每隔一段时间主动检查一次更改,否则我不会得到 cling 说我已被触发。

那绝对不是 AngularJS 的方式,而且我似乎没有足够的经验去想别的东西。

我在问你什么

您将如何处理这种情况,您将使用什么来使此页面尽可能干净和模块化(当然)。
我的想法是,在最坏的情况下,我会省略 modular 方法,只是把它弄脏,但可以工作。
不过,这让我很恼火,因为据我所知,这是 Angular 最强大的功能之一。

如果您能附上一些代码供大家查看和学习,我将不胜感激

【问题讨论】:

    标签: angularjs angular-ui-router angular-directive


    【解决方案1】:

    据我所知,此页面正在转向搜索功能。所以我建议你在这里实现 - 将搜索文本包含到你的路由参数中。

    您的搜索框,帮助用户写下搜索查询。一旦用户单击Search 按钮,就可以将搜索查询作为一些参数添加到路由中。从字面上更改位置 URL 将是搜索框的唯一职责。

    操作:用户在搜索框输入中写下Founder,然后按下搜索按钮。

    结果:位置从#/search/ 更改为#/search/Founder

    搜索结果视图应该只响应位置变化。如果搜索字符串发生变化,它应该对服务器进行所有需要的调用,并在Search result block中返回、处理和表示搜索结果。

    【讨论】:

    • 虽然我知道这不是一个好习惯,但我不希望该术语出现在 URL 中。另外,我简化了搜索框;实际上,它不仅仅是输入字段(它是一个包含 5-6 个对象的完整表单,用于精确搜索)。
    • 如果您想表示应用程序的当前状态,这是一种很好的做法,例如 - 与某人共享链接。可能是您的应用程序中出现搜索框但搜索结果没有出现的情况?如果不是,为什么要为单个逻辑组件使用 2 个不同的 ui 视图?
    • 这是一个很好的问题,你的观点很好。我稍后会创建一个 plunker 来分享结果。你建议如何处理整个搜索问题?这不仅仅是搜索词。你觉得应该是#/search/:main-term?addi-field1=x&...?
    • 是的,看起来这是一个很好的解决方案,以划分这两个视图的职责。您的搜索结果框将只查看 StateParams,如果选择了search 路由,则运行相关逻辑,并在服务器帮助下获取字符串参数进行处理。如果您希望我更新答案,请告诉我。
    猜你喜欢
    • 2014-08-18
    • 2015-12-30
    • 1970-01-01
    • 2015-08-13
    • 2014-09-06
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    相关资源
    最近更新 更多