如何通过使用angularJS单击另一个组件的按钮来更改一个组件的视图?

Posted

技术标签:

【中文标题】如何通过使用angularJS单击另一个组件的按钮来更改一个组件的视图?【英文标题】:How to change view from one component by clicking a button from another component using angularJS? 【发布时间】:2021-09-19 17:29:10 【问题描述】:

我是 AngularJs 新手,需要帮助。 我在 index.html 中有两个组件(欢迎和聊天)和两个可以在它们之间切换的测试按钮。

 <div ng-switch on ='view'>
    <button ng-click='view="welcome"'>Welcome</button>
    <button ng-click='view="chat"'>Chat</button>
    <welcome ng-switch-when='welcome' ></welcome>
    <chat ng-switch-when='chat'></chat>
    
  </div>

“Welcome.html”有一个&lt;button&gt;Start chat&lt;/button&gt;。 如何传递测试的行为&lt;button ng-click='view="chat"'&gt;Chat&lt;/button&gt;in index.html 到&lt;button class="start-chat-button" ng-click="view='chat'"&gt;Start chat&lt;/button&gt;inwelcome.html?现在这个按钮不会切换视图。

ng-switch 代码:

    angular.module('myApp', [
      'ngRoute',
      'myApp.welcome',
      'myApp.chat',
      'myApp.version'
    ])
    .controller('View', ['$scope', function($scope) 
      $scope.view = 'welcome';
    ]);

提前致谢!

【问题讨论】:

附带问题,你学习AngularJS是因为你必须维护一个旧项目而你别无选择吗?还是您只是“为了好玩”而学习它,以便熟练掌握它?因为如果是后者,你必须知道 AngularJS 在大约 5 年前发布 Angular 2 时就开始消亡了 @JeremyThille,我正在学习 AngularJs,因为这是我雇主的意愿。现在我在我所在城市的一家大公司实习,我的实习结果应该是Angularjs的一个应用。 所以它将是为了维护现有的应用程序。我怀疑您是否会使用 2016 年弃用的技术开发任何新应用程序。从那时起我就没有接触过它,所以我不知道如何回答您的问题。我曾经知道... @JeremyThille 也许......认为你是对的,我会维护现有项目。 【参考方案1】:

所以答案并不像我等待的那么难)

绑定解决了问题!感谢文章https://blog.krawaller.se/posts/dissecting-bindings-in-angularjs/

欢迎.html:

<welcome>
  <button ng-click="changeToChat()">Start chat</button>
</welcome>

welcome.js:

.directive('welcome', function() 
    return 
      scope: 
        changeToChat: '<' //the most important thing!

index.html:

<welcome change-to-chat="showChat"></welcome> //look to this attribute

app.js:

$scope.showChat = function() 
      $scope.isWelcome = !$scope.isWelcome;
  ;

我在 app.js 中写了一个函数 showChat。然后将它作为回调传递给欢迎的指令范围。就这样!按钮将视图从欢迎更改为聊天。

【讨论】:

以上是关于如何通过使用angularJS单击另一个组件的按钮来更改一个组件的视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过使用 Vue.js 中的路由器概念单击按钮来简单地从一个组件(主页)导航到另一个组件

从另一个不同的 AngularJS 组件访问表单(用于验证)

如何在反应js中发生事件(按钮单击)时将组件替换为另一个组件

通过单击另一个组件中的按钮,react-native重新呈现组件

当我单击一个链接时,如何更改另一个组件的状态?

如何通过单击按钮转到另一个视图