AngularJS 单击时更改控制器中的部分内容

2024-01-05

我正在开发一个仪表板应用程序,其中同时显示一组模块。我想向这些模块添加多个“视图”。例如,Github 模块的第一个视图是存储库列表。当您单击该模块中的存储库链接时,模块中的该视图将被替换为一个新屏幕,显示有关该存储库的所有详细信息。

但是,我希望此视图在此模块中被隔离,以便我可以同时继续使用其他模块(我根本不想切换页面)。

我想要实现的目标的一个例子可以在这里找到:http://jsfiddle.net/5LgCZ/ http://jsfiddle.net/5LgCZ/

在此示例中,您将单击水果或汽车,然后在新视图中获取有关该模块中所述项目的详细信息。 (它目前只是执行警报)。

这是我到目前为止所拥有的,但就控制器和视图而言,我不知道如何构建和处理它:

<div ng-app="app">
    <div class="module" ng-controller="FruitCtrl">
        <h1>Fruit Module</h1>
        <ul>
            <li ng-repeat="fruit in fruits"><a href="#" ng-click="showDetail(fruit)">{{fruit}}</a></li>
        </ul>
    </div>
    <div class="module" ng-controller="CarCtrl">
        <h1>Car Module</h1>
        <ul>
            <li ng-repeat="car in cars"><a href="#" ng-click="showDetail(car)">{{car}}</a></li>
        </ul>
    </div>
</div>

预先感谢任何能够提供帮助的人。


如果您不希望在同一个 HTML 元素中显示多个状态,您可以利用内置的ng-switch指示。这将允许您切换元素的内容,同时保持相同的内容$scope这样您就可以轻松地在这些状态之间共享数据。

这是您更新的小提琴:http://jsfiddle.net/dVFeN/ http://jsfiddle.net/dVFeN/下面是解释。

对于您的示例,它可能如下所示:

HTML

<div class="module" ng-controller="FruitCtrl">
    <h1>Fruit Module</h1>
    <div ng-switch="moduleState">
        <div ng-switch-when="list">
            <ul>
                <li ng-repeat="fruit in fruits"><a href="#" ng-click="showDetail(fruit)">{{fruit}}</a></li>
            </ul>
        </div>
        <div ng-switch-when="details">
            <p>Details for {{ selectedFruit }}</p>
            <a href="#" ng-click="showList()">Back to list</a>
        </div>
    </div>
</div>

额外的变量称为moduleState定义小部件的当前状态。感谢ng-switch指令外部的内容div根据传递给内部元素的值自动在内部元素之间切换ng-switch-when属性。

JS

function FruitCtrl($scope)
{
    $scope.moduleState = 'list';

    $scope.fruits = ['Banana', 'Orange', 'Apple'];

    $scope.showDetail = function(fruit)
    {
        $scope.selectedFruit = fruit;

        $scope.moduleState = 'details';
    };

    $scope.showList = function()
    {
        $scope.moduleState = 'list';
    };
}

这里你所要做的就是修改moduleState变量,它自动显示所需的小部件视图。此外,还推出了selectedFruit变量保存要在详细信息视图中操作的项目的引用。

使用的优点ng-switch指令是您可以轻松地以一致的方式向您的小部件添加任意数量的状态。

您可以相应地修改第二个模块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS 单击时更改控制器中的部分内容 的相关文章

随机推荐

  • 清除数字向上向下

    我的 NumericUpDown 控件问题是 当用户从 NumericUpDown 选择一个值并取消选中 checkBox1 并单击 保存 按钮时 NumericUpDown 的值不会被清除 Public Class FormAdd Pri
  • 将弹出窗口移出屏幕会意外关闭弹出窗口(带有 leaflet.markercluster 的传单)

    我不明白为什么 但每次我打开弹出窗口并且弹出窗口比屏幕大或者我将其锚点移出屏幕时 弹出窗口都会关闭 我现在测试了它 当它发生时leaflet markercluster正在播放 运行这个片段看看我的意思 与传单 markercluster
  • 将字符串转换为 JavaScript 中嵌套对象的属性

    我正在尝试访问一个字符串 key1 key2 作为对象的属性 例如 var obj key1 key2 value1 key3 value2 var attr string key1 key2 变量attr string是嵌套对象中的一串属
  • 具有相同名称和方括号的 jQuery 输入

    我有一个使用 jQuery 和 Ajax 来发布表单数据的表单 但无法让它发送具有相同名称和方括号的输入值 输入看起来像这样并且将具有不同的值
  • 从依赖表中删除数据

    SQL Server 2008 中是否有一个查询会删除所有依赖表中的数据以及所选表中的数据 我很抱歉没有详细说明这个问题 我知道级联删除可以正常工作 但我的应用程序连接到第 3 方 SQL Server 数据库 我有一些单元测试插入到目标表
  • SQL Server 标识规范不连续

    我注意到 SQL Server 2008 Express 在插入自动递增标识规范时会随机向前跳转 例如 我的其中一列 HitStat ID 将依次插入 15 16 17 18 然后突然间 它将决定跳转到 例如 1012 1013 1014
  • Typescript 与 Polymer 1.0?

    我发现这篇很棒的文章我一直在使用 Polymer 0 5 http www mikecann co uk programming tinkering with google polymer and typescript http www m
  • Firefox 中的预加载图像不会在同一页面加载时从缓存中检索

    在某些情况下 我正在网站的主页上运行脚本来交换计时器上的背景图像 我们认为最好尝试实现图像预加载 这会在 Firefox 中提示以下问题 在首页加载时预加载图像不会阻止浏览器再次从原始源而不是缓存加载图像 但奇怪的是 刷新页面会成功地从缓存
  • 如何使用 Flask 和 Flask-login 传递“下一个”URL?

    的文档Flask 登录 https flask login readthedocs org en latest 谈论处理 下一个 URL 这个想法似乎是 用户前往 secret 用户被重定向到登录页面 例如 login 登录成功后 用户将被
  • 将 UIWebView 限制为特定 URL (Swift)

    我正在尝试开发一款 iOS 应用程序 该应用程序在 Swift 中具有 UIWebView 但是我需要它仅适用于一个域 并且在该 UIWebView 中单击的任何外部链接都将在 Safari 中打开 例如 所有链接http example
  • 延迟初始化和 deinit

    我想知道是否有可能在我的视图控制器中使用惰性属性并在deinit方法仅在初始化时才调用我的惰性属性的方法 下面是一些代码 fileprivate lazy var session MySession let session MySessio
  • Rails 4 - 具有简单形式的依赖字段的 JS

    我正在尝试在 Rails 4 中制作一个应用程序 我正在使用简单的表单作为表单 并且刚刚尝试使用 gem dependent fields rails 来隐藏或显示基于主要问题的表单字段的子集问题 我被卡住了 我已将 gem 添加到我的 g
  • Javascript 与 Firefox insideText 问题[重复]

    这个问题在这里已经有答案了 function OpenWindow anchor var toUsername anchor innerText window open ChatWindow aspx username toUsername
  • Objective c - 处理自定义 UITableViewCell 按钮的按钮触摸事件的最佳实践

    处理自定义按钮的按钮触摸事件的最佳实践是什么UITableViewCell 我的课程 MyViewController MyCustomCell 我可以想到三个选择 第一个选项 将按钮作为属性MyCustomCell 然后在其中添加一个目标
  • 如何将字典附加到 pandas 数据框?

    我有一组包含 json 文件的 url 和一个空的 pandas 数据框 其中的列表示 jsnon 文件的属性 并非所有 json 文件都具有 pandas 数据框中的所有属性 我需要做的是从 json 文件创建字典 然后将每个字典作为新行
  • 将 FFmpeg 与 Android-NDK 结合使用

    我想用FFmpeg with Android NDK我在这方面非常基础 我需要一些帮助 我之前在网上研究过这个主题 但没有得到令人满意的解决方案 1 我如何使用FFmpeg通过 Windows 操作系统 我不想使用Ubuntu 请不要建议
  • 允许在url重写中使用中文字符

    我写了 URL 重写规则
  • 在 GDB 中搜索源目录

    如何告诉 nix 中的 GDB 在单个目录中递归搜索源文件 例如 如果一个模块中有一些不同的构建块 a 是 b c d 的父目录 其中 b c d 是子目录 源文件分布在b c b中 我需要向 GDB 指定所有源文件都位于 a 父目录 中
  • 我应该使用 PhoneGap 而不是增加 Android SDK 吗?

    虽然我对 Java 很熟悉 但我在 Web 开发方面有更多的经验 我希望开始编写简单的 Android 游戏 我是否应该只使用 Javascript HTML 来编写所有内容 而忘记在 Java Android SDK 上进行升级 我想我的
  • AngularJS 单击时更改控制器中的部分内容

    我正在开发一个仪表板应用程序 其中同时显示一组模块 我想向这些模块添加多个 视图 例如 Github 模块的第一个视图是存储库列表 当您单击该模块中的存储库链接时 模块中的该视图将被替换为一个新屏幕 显示有关该存储库的所有详细信息 但是 我