javascript - 动态更新和检查对象数组

标签 javascript arrays angularjs angularjs-scope angular-filters

所以我有一个回调函数,它从 dom 返回一个数据对象(有一个项目列表,每次选择一个项目时,它都会将其作为对象返回)。这是回调函数:

$scope.fClick = function( data ) {                 
                    $scope.x = data;
                }

当您从下拉列表中选择一个项目时,从 fClick 返回的对象如下所示:{ name: "English", ticked: true }

当您从下拉列表中取消选择它时,它将返回如下内容:

{ name: "English", 勾选: false }

现在我保留一个类似于 $scope.output 的数组来维护返回对象的列表。但是,我想要做的是仅当输出中不存在具有相同属性“名称”值的对象时,将从scope.fClick 返回的对象添加到 $scope.output 。因此,现在在我的实现中, { name: "English", ticked: false }{ name: "English", ticked: true } 都添加到数组中。相反,我希望它更新勾选的属性。因此,例如,如果 $scope.output = { name: "English", ticked: false } ,然后scope.fClick 返回 { name: "English", ticked: true}。当我将此值推送到 $scope.output 时,我希望它更新现有对象的 tick 属性,因此 $scope.output = { name: "English", ticked: false } 变为 $ scope.output = { name: "English", 勾选: true }

这是我尝试过的:

$scope.fClick = function( data ) {                 
                    $scope.x = data;
                }
                $scope.$watch(function () {
                return $scope.y = $scope.x;
                },function (newValue, oldValue) {
                    var id = $scope.output.indexOf(newValue);
                    if(id === -1){
                        $scope.output.push(newValue);
                            }
                    else {
                        $scope.output[id].tick = newValue.tick;
                    }
                    console.log($scope.output);

            },true);

我该如何完成这项工作?

最佳答案

设置和获取Angularjs的选定值、名称和文本isteven-multi-select

<div isteven-multi-select
    input-model="marks"
    output-model="filters.marks"
    button-label="name"
    item-label="name"
    tick-property="ticked"
    selection-mode="multiple"
    helper-elements="all none filter"
    on-item-click="fClick( data )"
    default-label="Select marks"
    max-labels="1"
    max-height="250px">
</div>

添加项目

$scope.marks= [
    { name: 'Mark I', value: 'Mark i', text: 'This is Mark 1', ticked: true },
    { name: 'Mark II', value: 'Mark ii', text: 'This is Mark 2' },
    { name: 'Mark III', value: 'Mark iii', text: 'This is Mark 3' }
];

获取所选项目(更改时)

$scope.fClick = function (data) {
    console.log(data.name);
    console.log(data.value);
    console.log(data.text);
    return;
}

选择项目(动态)

$scope.abc = function (data) {
    console.log(data.element1, data.element2);

    angular.forEach($scope.marks, function (item) {
        if (item.value == data.element1) {
            item.ticked = true;
        }
        else {
            item.ticked = false;
        }
    });
}

取消选择项目

$scope.marks.map(function (item) {
    if (item.value == "")
        item.ticked = true;
    else
        item.ticked = false
});

关于javascript - 动态更新和检查对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31820381/

相关文章:

javascript - 什么是 Microsoft ajax minifier 中的 hypercrunching?

javascript - 获取另一个数组中不存在的 JSON 对象

javascript - 从数组中删除重复项

arrays - 修改继承自 `Array`的类的receiver

c - 获取我的数组的大小

javascript - Ace 编辑器未在编辑器中显示 HTML 代码

javascript - goog.ui.ac.AutoComplete 以对象作为数据源

javascript - Angular中的$routeProvider在未定义中找不到

AngularJS 代理指令

javascript - 如何在 Angularjs 中模拟 HTML 表单请求?