javascript - 将用户添加到下拉列表不起作用

标签 javascript angularjs angular-ui-grid

晚上好! 将用户添加到下拉列表时出现问题(使用 ui-grid)。 如果列表中没有这样的名称,我需要在单击“addNewPerson”按钮后将输入名称按 id 插入 dd 列表,或者调用“alert”(如果有)。

这是一段代码,负责在html中创建dd列表:

<ui-select ng-model="person.selected" theme="select2" style="min-width:300px;">

<ui-select-match placeholder="Select a person in the list or search by name">{{$select.selected.name}}
        </ui-select-match>
        <ui-select-choices repeat="person in contacts | filter: {name: $select.search} track by $index">
            <div ng-bind-html="person.name | highlight: $select.search"></div>
        </ui-select-choices>
    </ui-select>

按钮和输入字段:

<button type="button" id="addPerson" class="button" ng-  click="addNewPerson()">Add New Person</button>

<input id="name" class="form-control" placeholder="Enter your Name">

带有“name”字段的对象数组,需要传入dd列表:

    $scope.contacts = [
    {name: "Han Solo"},
    {name: "ThetaSigma"},
    {name: "Ollie Reeder"},
    {name: "Amy McDonald"},
    {name: "PJ Harvey"},
    {name: "Sofie Marceau"},
    {name: "Arthur Zimmermann"},
    {name: "Michelle Dockery"},
    {name: "Xavier Dolan"}
];

最后,臭名昭著的功能:

$scope.person = {};

    $scope.addNewPerson = function () {
    var nameInput = document.getElementById("name");

    for (var i=0; i <= $scope.contacts.length; i++) {

        if ($scope.contacts[i].name == nameInput.value.toLowerCase()) {
            alert("Error, the name entered already exists");
        }else{
            var obj1 = {name: nameInput.value};
            $scope.contacts.push(obj1);
        }
    }

};

我尝试过该函数的各种形式,它要么不推送任何内容并提醒 10 次,要么正确推送名称,但即使是已经存在的名称,或者在单次添加后推送 10 次并提醒 10 次。

我是残疾人。试图在这里找到类似的问答,但无济于事。 抱歉我的英语,这不是我的母语。

最佳答案

正在工作 codepen示例。

首先更改输入的 html 以使用范围变量:

<input ng-model="name" class="form-control" placeholder="Enter your Name">

在 Controller 中:

$scope.name = "";
$scope.addNewPerson = function () {
  for (var i=0; i < $scope.contacts.length; i++) {

    if ($scope.contacts[i].name.toLowerCase() === $scope.name.toLowerCase()) {
        alert("Error, the name entered already exists");
        return;
    }
  }
  $scope.contacts.push({name: $scope.name});
};

关于javascript - 将用户添加到下拉列表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32745923/

相关文章:

javascript - 是否可以使用 CSS 像这张图片一样制作动画?

angularjs - 如何在 Angular UI 路由器中预加载模板?

javascript - Angular ui-grid 分页 v3.0.0-RC.18 不起作用

javascript - 动态更改关键帧后如何重新启动更新的动画?

javascript - 基于case语句动态打开 Accordion

javascript - 比较文件中的图像和从 Canvas 创建的图像

javascript - 指令作为 Bootstrap ui 模式中的类不编译

angularjs - 组件不会在查询参数更改 Angular 2 时重新初始化

javascript - 如何同步跨 2 个 Angular UI-Grid 的列排序

angular-ui-grid - 使用外部网格过滤时,如何隐藏 `Clear All Filters` 网格菜单选项