【问题标题】:How can I save a option from multi select in Angular?如何从 Angular 中的多选中保存选项?
【发布时间】:2021-12-24 04:21:24
【问题描述】:

我有一个名为“Impacto OEE”的单选模式,它有 3 个选项“Queda de Disponibilidade”、“Queda de Performance”和“Nenhum”。如果用户选择的选项是“Queda de Disponibilidade”,它将被保存为“Disponibilidade”,如果是“Queda de Performance”,它将被保存为“Performance”,如果是“Nenhum”,它将被保存为“Nenhum”。但是当我点击注册时,它只保存为“Disponibilidade”或“Nenhum”。在我的数据库 (PostgreSQL) 中,该列被称为“impact_oee”作为 ENUM,其值为“Disponibilidade、“Performance”、“Nenhum”。

我是 Angular 的新手,但我不明白我应该怎么做才能让它正常工作,或者我做错了什么。以下是部分代码。有人可以帮我吗?

这是我的 HTML 代码:

<div class="input-group">
    <isteven-multi-select directive-id="impactos" tabindex="4" class="multiselect" helper-elements="filter"
                          translation="traducaoMultiSelect"
                          input-model="impactos"
                          output-model="impacto"
                          button-label="name"
                          item-label="name"
                          tick-property="ticked"
                          ng-class="{'open':impactosOpen }"
                          on-open="impactosOpen = true"
                          on-close="impactosOpen = false"
                          selection-mode="single" />
</div>

多选配置:

$scope.impactos = [{ name: "Queda de Disponibilidade" }, { name: "Queda de Performance" }, { name: "Nenhum" }]

我在哪里从我的服务器获取数据:

new Promise(function (resolve, reject) {
                    restApi.motivosParadaGerenciamento.query({}, function (array) {
                        $scope.motivos = [];
                        if (array.length > 0) {
                            for (var i = 0; i < array.length; i++) {
                                $scope.motivos.push({
                                    id: array[i].id,
                                    ...

                                    impactos: array[i].impacto_oee,

                                    ...
                                });
                            }
                        }

我的注册功能:

function cadastrar () {
    restApi.gerenciamentoMotivosParada.save({
        ...
        impacto_oee: $scope.selectedUnique($scope.impactos) === "Queda de Disponibilidade" ? "Disponibilidade" : "Queda de Performance" ? "Performance" : "Nenhum",
    }, ...
}

我有一个在编辑部分使用的更新功能,当我选择“Nenhum”时它也不起作用。 “Nenhum”选项会被忽略。

function atualizar () {
    var motivo;
    if ($scope.editing >= 0) {
        motivo = {
            ...         
            impacto_oee: $scope.selectedUnique($scope.impacto) === "Queda de Disponibilidade" ? "Disponibilidade" : "Queda de Performance" ? "Performance" : "Nenhum" ? "Nenhum" : "Nenhum"
           ...
        };
    } 

【问题讨论】:

    标签: javascript node.js angularjs


    【解决方案1】:

    问题在于您的注册功能。正确的写法如下

    function cadastrar () {
        restApi.gerenciamentoMotivosParada.save({
            ...
            impacto_oee: ($scope.selectedUnique($scope.impactos) === "Queda de Disponibilidade") ? "Disponibilidade" : ($scope.selectedUnique($scope.impactos) === "Queda de Performance") ? "Performance" : "Nenhum",
        },
        ...
    }
    

    说明:

    基本上,您尝试使用三元运算符实现的目标是if-elseif-else

    if (condition1) {
        //value1
    } else if(condition2) {
        //value2
    } else {
        //value3
    }
    

    在您的情况下,condition2 丢失,这就是原因,它没有检查“Queda de Performance”条件

    【讨论】:

    • 对不起,但它似乎不像我想象的那样工作。现在无论选项如何,它都只是保存为“Nenhum”
    • 你能检查 $scope.selectedUnique($scope.impactos) 函数是否返回正确的值吗?
    • 舒尔,我做了一个console.log($scope.selectedUnique($scope.impactos)),显示的是"Queda de Disponibilidade",即使我选择了其他选项之一.. 我有点困惑。
    • 我在我的问题中又添加了一件事,如果你能看一下... :)
    • 很奇怪的行为,$scope.selectedUnique() 函数是做什么的?可以分享一下它的sn-p吗?
    猜你喜欢
    • 2018-01-21
    • 1970-01-01
    • 2021-08-18
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    相关资源
    最近更新 更多