javascript - AngularJS 中同一页面上具有不同 Controller 的同一模板

标签 javascript angularjs

我在 AngularJS 的同一页面上使用具有不同 Controller 的相同模板时遇到问题。

假设我有一个与 Controller A 一起使用的面板模板 PANEL。

A 有一个方法 doSomething() ,它在范围内。当我单击面板按钮时,PANEL 会调用此方法。

我想复制此面板,并在 Controller 中进行细微更改,因此我向此页面添加另一个面板,即带有 Controller B 的面板。

B也有这个方法doSomething()。

我注意到,当我单击附加到 Controller B 的面板中的按钮(使用指令)时,它会调用 Controller A 中的 doSomething() 。发生这种情况的原因可能是 Controller A 的 doSomething() 和B 都在有意义的范围内。

问题是如何才能让它正常工作? 我知道我可以使用 ng-if 或其他一些影响 HTML 的原因来做到这一点,但是有没有一种优雅的方法来做到这一点?

最佳答案

首先想到的一件事是使用 ui-router 并在 Controller 的方法中检查您所处的“状态”并为每个状态执行不同的操作。

即。在您的方法中,有两种状态,panelA 和 panelB,如下所示:

method() {
  if ($state.current.name === 'panelA') {
    do_something_for_panel_A();
  }
  if ($state.current.name === 'panelB') {
    do_something_for_panel_B();
  }
}

Ofc,我建议为每个“状态”使用一个单独的模板,每个模板都有自己的 Controller 。但设计是个性化且基于项目的,所以这取决于您。

关于javascript - AngularJS 中同一页面上具有不同 Controller 的同一模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43734250/

相关文章:

javascript - 删除成功后从表中删除行吗?

javascript - 包含一个 jQuery 文件似乎覆盖了我的背景

javascript - 连续更改类名不会给出预期的输出

javascript - 如何在react中显示来自api的数据

javascript - 使用 AngularJS 循环元素

javascript - 无法显示 Angular 形式的跨度

javascript - 使用 Gulp 将 jsx 转换为 js 时出现 React 语法错误

javascript - Angular 范围变量中的数组只有一个成员

javascript - 无法访问 $scope.property,但可以在 console.log($scope) 上看到它

JavaScript 函数链式组合