使用 AngularJS 观察下拉菜单的所选项目不起作用

2024-01-12

跟进自AngularJS:为什么我的手表不工作 https://stackoverflow.com/questions/16486634/why-my-angularjs-watch-is-not-working

function myController($scope, $http) {

    $scope.abc = abcValueFromOutsideOfMyController;    

    $scope.getAbcCnt= function()
    {
        url2 = baseURL + '/count/' + $scope.abc;

        $http.get(url2).success(function (data) {
            $scope.abcCnt = data.trim();
        });
    };

    $scope.$watch('abc',getAbcCnt);
}

为什么我在 $scope.abc 上收到未定义的错误。

abcValueFromOutsideOfMyController 通过下拉列表选择元素来设置。它最初是未定义的,但一旦选择下拉菜单,该值将不是未定义的,我在控制台中验证,我得到了一些值。

下拉代码在这里

$(document).on('click', '.dropdown-menu li a', function () {

    selectedItem = $(this).text();
    $("#selectedItem").text(selectedItem);
    abcValueFromOutsideOfMyController= selectedItem.trim();
    console.log(abcValueFromOutsideOfMyController);
});

这是我的html

<div class="dropdown btn">

    <div id="collectiondropDown" class="dropdown-toggle" id="dLabel" role="button" data-toggle="dropdown"
         data-target="#" >
        &nbsp;<span id="selectedItem" ng-model="abc">Items</span>
        <b class="caret"></b>
    </div>

    <ul id="dropDownUL" class="dropdown-menu pull-left" role="menu" aria-labelledby="dLabel">
    </ul>
</div>

我是 AngularJS 的新手,如果我缺少一些基本概念并且上述概念无法做到,请告诉我。


$scope.abc正如您所提到的,它在某些时候是未定义的,并且可能在此期间被访问。看起来你正在设置$scope.abc通过 jQuery,你应该通过ng-model在 AngularJS 中。

首先,只需为变量定义一个存根:

$scope.abc = "";

然后在你的 HTML 中:

<input ... ng-model="abc" ... />

这会将输入元素(也适用于选择)绑定到后端变量。当用户做出选择时,它会神奇地在您的代码中更新,如果您更新代码中的变量,它也会在视图中更新!

您可以阅读更多有关ng-model here: http://docs.angularjs.org/api/ng.directive:ngModel http://docs.angularjs.org/api/ng.directive:ngModel

UPDATE

这是与 Twitter Bootstrap 的下拉菜单配合使用的另一个选项。它可能不是最“最好”的解决方案,但它是第一个想到的解决方案。

在您的元素中,您可以添加ng-click http://docs.angularjs.org/api/ng.directive%3angClick指令并调用控制器中的函数。然后,该控制器设置一个用作按钮标题的变量。在这种情况下你不使用ng-model,您只需将变量包含在{{ }}容器。

你的 HTML 看起来像这样:

<div class="dropdown btn">
  <div id="collectiondropDown" class="dropdown-toggle" id="dLabel" role="button" data-toggle="dropdown" data-target="#" >
    <span>{{ selectedItem }}</span>
    <b class="caret"></b>
  </div>

  <ul id="dropDownUL" class="dropdown-menu pull-left" role="menu" aria-labelledby="dLabel">
    <li ng-click="OnItemClick('Option 1')">Option 1</li>
    <li ng-click="OnItemClick('Option 2')">Option 2</li>
    <li ng-click="OnItemClick('Option 3')">Option 3</li>
  </ul>
</div>

...以及你的 JavaScript:

function DropdownCtrl($scope) {

  $scope.selectedItem = "Items";

  $scope.OnItemClick = function(event) {
    $scope.selectedItem = event;
  }
}

我已经创建了一个 Plunker 示例。你可以在这里找到它:http://plnkr.co/edit/JrKJKxfG6aYiLHfR4pGE?p=preview http://plnkr.co/edit/JrKJKxfG6aYiLHfR4pGE?p=preview

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

使用 AngularJS 观察下拉菜单的所选项目不起作用 的相关文章

随机推荐

  • 如何向android studio添加外部依赖(jar文件)?

    我正在尝试将外部库 httpmime 4 0 sources jar 添加到 android 项目中 因为 android studio 弹出如下错误 error 包 org apache http entity mime 不存在 erro
  • Microsoft UI 自动化的 Python 绑定? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道 Microsoft UI 自动化的 Python 绑定吗 http msdn microso
  • Flutter:如何避免在现有路由上推送相同的路由

    我有带有底部导航栏的视图 当您按下导航栏项目时 一条新路线将被推入视图中 final navigatorKey GlobalKey
  • Azure B2C:检查本地帐户创建期间是否存在另一个声明

    除了通常根据所使用的电子邮件当前是否存在创建帐户之外 我想知道如何检查 Azure Active Directory 中是否不存在另一个声明值 例如 对于我们的应用程序 创建帐户的任何人都必须提供组织名称 一旦他们注册 他们就是其组织群组的
  • 如何使用 Selenium 和 Python 更改用户代理

    我在使用 selenium 更改 Python 中的 Web 驱动程序用户代理时遇到错误 这是我的代码 import requests import json from selenium import webdriver from sele
  • Vector3 不可序列化 Unity3D

    好吧 我按照 Unity3D 数据持久化教程进行操作 一切都很顺利 直到我尝试保存 Vector3 类型的数据 本教程仅展示如何保存 int 和 string 当我使用函数 Save 时 控制台向我显示says SerializationE
  • 使用 REST API 的可编辑 jQuery 网格推荐

    首先 我已经读过这个问题 jQuery 网格建议 https stackoverflow com questions 159025 jquery grid recommendations 但这并不能回答我的问题 我有一个小带有 MongoD
  • 带指数的浮点文字的类型

    具有指数部分的浮点文字是什么类型 例如123456e 3在 C 99 中 是否属于类型float or double 当用作float初始化程序在float f 123456e 3 是否需要有一个f suffix 默认情况下 所有浮点文字
  • 节点Hmac认证

    我对认证过程的理解 主机创建一个secret and a public api key 客户端借助密钥对有效负载进行加密 这就是签名 然后将其公钥 有效负载 签名发送给主机 示例客户端 https github com bitfinexco
  • viewModelScope 未取消

    看完后Sean 对 Android 的解释 Google I O 19 https youtu be BOHK w09pVA t 1425我也尝试过同样的操作 init viewModelScope launch Timber i coro
  • 在替换迭代器中使用未初始化值 $ARGV[1]

    我正在尝试运行我编写的这个程序 但不断收到一条错误消息 其中指出以下内容 在替换迭代器中使用未初始化值 ARGV 1 replaceName pl 第 22 行 因为该值是从命令行传递的名称 并且是第二个参数 所以我不确定出了什么问题 us
  • android selectableItem背景选择

    我想在状态 激活 时更改视图的背景 并且我想保留以下效果 波纹 attr selectableItemBackground 是否可以扩展或组合选择器 attr selectableItemBackground 您可以使用LayerDrawa
  • 以编程方式更改应用程序 Dock 图标 javaFX

    我有一个只能从 JAR 加载的 javaFX 应用程序 但我想更改 mac 扩展坞中的图标 我已经成功地在 Windows 上解决了这个问题 我正在使用 Netbeans IDE 并且不想添加额外的 Apple JAR 扩展文件 正因为如此
  • Django1.4:在模板中设置语言链接以使用 i18n_patterns 的通用方法?

    我开始使用 Django 1 4 中的新 i18n patterns 基本上 我希望在所有模板标题上都有我支持的每种语言的语言链接 我已将标头实现为包含在其他模板中的单独模板 有没有办法让我的标头保持通用并解决此问题 而无需在模板上下文中传
  • 使用 dplyr::mutate() 在列子集上按行 cor()

    set seed 8 df lt data frame A sample c 1 3 10 replace T B sample c 1 3 10 replace T C sample c 1 3 10 replace T D sample
  • 找不到模块 jest-sequencer-@jest/test-sequencer

    我正在尝试在 VSCode 中调试 Jest 测试 但它无法解析某些模块 我设置了一个断点jest run下面被称为argv runInBand no cache watchAll false config roots
  • 如何为 Maven 设置 Archiva 内部+快照存储库?

    我们正在尝试使用 Archiva 作为中央和其他外部存储库的 Maven 代理 同时也作为我们的工件的快照存储 这些工件由 Hudson 从 SVN 自动构建并安装到快照存储库 我无法将 Maven 客户端设置为同时使用内部存储库和快照存储
  • 如何在首页加载时执行 JavaScript 函数?

    我想知道是否有一种方法可以只在第一次页面加载时执行一次 JavaScript 函数 然后在任何后续重新加载时都不执行 我有办法做到这一点吗 下面的代码将在以下代码执行一次onload https developer mozilla org
  • MKMapView 因 EXC_BAD_ACCESS 崩溃

    我有以下激活断点的代码行 mapView addAnnotations grabinstance itemArray 这随机崩溃 rabinstance itemArray 始终被完全填充 并且当时永远不会改变 因为只有在数组已满时才会调用
  • 使用 AngularJS 观察下拉菜单的所选项目不起作用

    跟进自AngularJS 为什么我的手表不工作 https stackoverflow com questions 16486634 why my angularjs watch is not working function myCont