javascript – 如何使两个控制器在Angular中执行相同的操作,但改变站点的视觉方面?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何使两个控制器在Angular中执行相同的操作,但改变站点的视觉方面?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1953字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 如何使两个控制器在Angular中执行相同的操作,但改变站点的视觉方面?](/upload/InfoBanner/zyjiaocheng/816/dc6fb6ae7c5e4d498c46d1773f284711.jpg)
我想在Angular中复制Google的主页功能,这让我感到悲伤.我已经浏览了Egghead视频并阅读了整个API,但没有关于该确切行为的特定示例.我想要它做的是以下内容:
>用户来到主页,主搜索栏存在和通用黑色标题栏
>用户搜索某些内容,只有当他按下“搜索”时,主搜索栏才会消失,网址将更改为mysite.com/q/searchTerm,并且黑色标题栏下会出现一个新的子标题,就像Google的主页一样,主要搜索字段被删除并放置在主标题栏下方的灰色栏中(如果您有即时搜索关闭)
>搜索结果代替现在已经消失的主搜索栏,就像谷歌一样,但这部分我可以处理路线和视图.两个相同控制器之间的布局切换困扰着我.
到目前为止,我尝试过的是:
>为两个MainCtrl子控制器创建一个父控制器,并设置其scope.data = {searchHeaderDisplay:false}
>让两个子控制器共享相同的名称(MainCtrl),因为它们共享完全相同的功能
>在标题栏中输入一个ng-show =“data.searchHeaderDisplay”和主要的一个ng-hide =“data.searchHeaderDisplay”,然后尝试在搜索按钮的ng-click上切换data.searchHeaderDisplay.这不起作用 – 没有产生任何影响.
我还在和AngularJS达成协议,所以我确信这很简单,我只需要一两个实用的例子来学习.
编辑:将次要标题(使用较小的搜索字段)与搜索结果一起推送到单独的视图模板中,将根视图作为主搜索字段会更好吗?关于视图和路由的最佳实践文档非常宽松,尤其是有多个控制器执行某些操作的路由.
解决方法:
如果我理解正确,则在两个MainCtrl控制器的父控制器上设置scope.data = {searchHeaderDisplay:false},目的是使MainCtrl控制器能够共享相同的模型数据.那一切都很好.
在没有看到你的代码的情况下,我的猜测是问题在于如何在ng-click上切换data.searchHeaderDisplay.当您应该将值分配给其父作用域级别时,您可能已在子作用域级别(即与MainCtrl控制器对应的作用域)上设置了data.searchHeaderDisplay.如果您需要我详细说明,请告诉我.
更新:
看一下提供的代码后,问题确实和我之前所怀疑的一样(上图).
mainProductSearch()是需要更改的.而不是scope.data.searchHeaderVisible = true;,您需要范围.$parent.data.searchHeaderVisible = true,前面简要说明了原因.如果您仍然不清楚背后的基本原理,那么您可能需要熟悉AngularJS范围的原型继承链(和/或一般的Javascript对象).范围原型继承是AngularJS的重要组成部分. Here is a great article on the topic.
内容总结
以上是互联网集市为您收集整理的javascript – 如何使两个控制器在Angular中执行相同的操作,但改变站点的视觉方面?全部内容,希望文章能够帮你解决javascript – 如何使两个控制器在Angular中执行相同的操作,但改变站点的视觉方面?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。