Angularjs-分离全局搜索和页面内容
Angularjs - separating global search and page contents?
到目前为止,我的简单angular应用程序有三个页面;每个页面都有自己的控制器,用于处理与用户和后端系统的各种交互。我想添加一个div标题,其中包含一个搜索栏,很像您在StackOverflow!上每个页面顶部看到的那个!。
问题在于在搜索栏和页面内容之间分离控制器逻辑。我觉得它们应该放在单独的控制器中,这样代码就可以模块化了。搜索控制器将处理所有页面上与搜索栏的交互以及显示搜索结果页面,而页面内容控制器将处理其特定页面内容的逻辑。
我目前的设置是(片段):
app.js
function appRouteConfig($stateProvider, $urlRouteProvider) {
$stateProvider
.state("landingpage", {
url: '/',
controller: "LandingPageCtrl",
templateUrl: "views/html/landing.html"
})
.state("discussion", {
url: '/discussion',
controller: "DiscussionCtrl",
templateUrl: "views/html/discussion.html"
})
.state("search_content", {
url: "/search_results",
controller: "SearchCtrl",
templateUrl: "views/html/searchpage.html"
})
}
controller.js
controllers.controller("SearchCtrl", ["$scope", "$location",
function($scope, $location) {
$scope.search = function(query) {
// Query backend server and redirect to /search_results with response.
}
}
]);
讨论.html
<div data-ng-include=" 'views/html/searchNav.html ' "></div>
<div class="discussion">
<!-- Discussion html -->
</div>
但这里的问题是,我已经在app.js中为每条路由声明了一个控制器。因此,当我访问/discussion
时,将加载的控制器将是DiscussionCtrl
,并且不会加载搜索控制器,因此搜索无法工作。
我可以删除路线中指定的所有控制器,并手动设置它们,大致如下:
<div ng-controller="SearchCtrl">
....
</div>
<div ng-controller="DiscussionCtrl">
....
</div>
这样,我的两个控制器都会被加载,但在我的所有页面上手动指定它似乎很痛苦。如果我在未来添加20多个新页面(不按比例扩展),这似乎不会很好地扩展,如果多个不同的路由使用同一个控制器,这会很烦人。
另一种解决方案可能是,我在每个控制器中都有一个doSearchSubmit()
,但由于搜索代码是相同的(只是查询后端服务器并重定向到搜索结果页面),因此在所有控制器中都是重复的代码,这是不好的。
我应该如何在Angular中正确集成搜索导航栏?
你可以用很多方法来解决这个问题,但在我看来,最好的方法是编写一个自定义指令或使用这样的指令:
https://github.com/dnauck/angular-advanced-searchbox
演示:http://dnauck.github.io/angular-advanced-searchbox/
- 用程序搜索JQuery数据表中的文本
- 全局变量和全局对象的属性之间有什么区别吗
- 正在全局范围中查找JavaScript函数
- 在html Select中添加搜索
- Ajax Live搜索发布到Laravel视图
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 学生搜索项目jquery/javascript
- delete关键字在全局变量上的不同行为
- 用于搜索的聚合物嵌套绑定
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 骨干多集合全局搜索
- Angularjs-分离全局搜索和页面内容
- JavaScript 中的 RegExp 在进行全局搜索时出现错误
- 带有JSON数据源的jQueryDataTables插件在全局搜索中接受多个POST请求
- Javascript-Regexp-全局搜索问题
- 在Microsoft Dynamics Crm中自定义全局搜索框
- 如何在两个搜索框中拆分/分离输入文本
- Javascript RegEx全局字符串搜索下划线字符(_)
- Chrome用户脚本是否与全局命名空间分离,如Greasemonkey脚本