javascript - 如何防止在Angularjs中插入重复记录

标签 javascript angularjs html

我正在使用 Angular 和 Web API 从 SQL 数据库表加载所有记录,我想做的是防止用户在 Angular 中插入新记录,以防某些数据与其他记录返回的数据重复,在访问 API 之前。 当按下“保存”时,如何发出警报以通知用户并提醒用户,有些字段已经存在,例如“code”、“L_Desk”、“A_Desc”以及从表中加载的数据。

HTML:

<body ng-app="ContractT" ng-controller="crudController">
<br /><br />

<input type="checkbox" ng-model="Hide" />Hide <input type="button" value="Clear" ng-click="resetform()" />
    <input type="submit" value="Save" ng-click="save()"/> <input type="button" value="Delete" ng-click="delete(selectedMember.sys_key)" />
    <fieldset>
        <legend>Contract Type</legend>
        <table>
            <tr>
                <td>Code</td>
                <td><input type="text" size="10" pattern="^[a-zA-Z0-9]+$" title="Alphnumeric" required autofocus ng-model="selectedMember.Code.Staff_Type_Code">
                    <input type="text" size="10" hidden ng-model="selectedMember.sys_key" /> </td>
            </tr>
            <tr>
                <td>Latin Description</td>
                <td><input type="text" required size="35" ng-model="selectedMember.Latin.L_Desc"></td>
            </tr>
            <tr>
                <td>Local Description</td>
                <td><input type="text" required size="35" ng-model="selectedMember.Local.A_Desc"></td>
            </tr>
            <tr>
                <td>No. Of Houres Per Day</td>
                <td><input type="text" pattern="^[0-9]+$" title="Please enter numbers only" size="10" maxlength="2" ng-model="selectedMember.Hours_Day"></td>
            </tr>
            <tr>
                <td>No. Of Days Per Week(s)</td>
                <td><input type="text" pattern="^[0-9]+$" title="Please enter numbers only" size="10" maxlength="2" ng-model="selectedMember.Days_Week"></td>
            </tr>
            <tr>
                <td>End Of Contract By</td>
                <td>
                    <select ng-model="selectedContract">
                        <option>Age</option>
                        <option>Number Of Years in Service</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Number</td>
                <td>
                    <input type="text" pattern="^[0-9]+$" title="Please enter numbers only" size="10" maxlength="2" ng-model="selectedMember.Num_EndWork">
                    <select ng-model="selectedNumber">
                        <option >Months</option>
                        <option>Years</option>
                    </select>
                </td>
            </tr>

        </table>
    </fieldset>

    <br />

    <table border="1" ng-hide="Hide">
        <thead>
            <tr>
                <!--<th>syskey</th>-->
                <th>Code</th>
                <th>Latin Description</th>
                <th>Local Description</th>
                <th>Hours_Day</th>
                <th>Days_Week</th>
                <th>Num_EndWork</th>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="c in Contracts | filter:selectedMember.Code | filter:selectedMember.Latin | filter:selectedMember.Local ">

                <td style="display:none;"><a href="#" ng-click="showInEdit(c)">{{c.sys_key}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.Staff_Type_Code}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.L_Desc}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.A_Desc}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.Hours_Day}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.Days_Week}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.Num_EndWork}}</a></td>

            </tr>
        </tbody>
    </table>

</form>

Controller :

    contractT.controller('crudController', function ($scope, crudService)
{
    loadrecords();
    function loadrecords()
    {    
        crudService.getContracts().then(function (response) {
            $scope.Contracts = (response.data);
            $scope.selectedMember = {};
            console.log($scope.Contracts);
        });
    }

$scope.save = function () {

    debugger; 

    if ($scope.selectedContract == 'Age' && $scope.selectedNumber == 'Months') {
        var Contract = {
            Staff_Type_Code: $scope.selectedMember.Code.Staff_Type_Code,
            L_Desc: $scope.selectedMember.Latin.L_Desc,
            A_Desc: $scope.selectedMember.Local.A_Desc,
            Num_EndWork: $scope.selectedMember.Num_EndWork,
            Type_EndWork: 1,
            Hours_Day: $scope.selectedMember.Hours_Day,
            Days_Week: $scope.selectedMember.Days_Week,
            sys_key: $scope.selectedMember.sys_key
        }


    }
    else if ($scope.selectedContract == 'Age' && $scope.selectedNumber == 'Years')
    {
        var Contract = {
            Staff_Type_Code: $scope.selectedMember.Code.Staff_Type_Code,
            L_Desc: $scope.selectedMember.Latin.L_Desc,
            A_Desc: $scope.selectedMember.Local.A_Desc,
            Num_EndWork: $scope.selectedMember.Num_EndWork,
            Type_EndWork: 2,
            Hours_Day: $scope.selectedMember.Hours_Day,
            Days_Week: $scope.selectedMember.Days_Week,
            sys_key: $scope.selectedMember.sys_key
        }
    }

    else if ($scope.selectedContract == 'Number Of Years in Service' && $scope.selectedNumber == 'Months') {
        var Contract = {
            Staff_Type_Code: $scope.selectedMember.Code.Staff_Type_Code,
            L_Desc: $scope.selectedMember.Latin.L_Desc,
            A_Desc: $scope.selectedMember.Local.A_Desc,
            Num_EndWork: $scope.selectedMember.Num_EndWork,
            Type_EndWork: 3,
            Hours_Day: $scope.selectedMember.Hours_Day,
            Days_Week: $scope.selectedMember.Days_Week,
            sys_key: $scope.selectedMember.sys_key
        }
    }

    else  {
        var Contract = {
            Staff_Type_Code: $scope.selectedMember.Code.Staff_Type_Code,
            L_Desc: $scope.selectedMember.Latin.L_Desc,
            A_Desc: $scope.selectedMember.Local.A_Desc,
            Num_EndWork: $scope.selectedMember.Num_EndWork,
            Type_EndWork: 4,
            Hours_Day: $scope.selectedMember.Hours_Day,
            Days_Week: $scope.selectedMember.Days_Week,
            sys_key: $scope.selectedMember.sys_key
        }
    }

    if (!$scope.selectedMember.sys_key) {
        var promisePost = crudService.post(Contract);
        promisePost.then(function (pl) {
            loadRecords();
            $scope.selectedmember = {};
        }, function (err) {
            console.log("Err" + err);
        });
    }
    else
    {
        var promisePost = crudService.put(Contract);
        promisePost.then(function (pl) {
            loadRecords();
            $scope.selectedmember = {};
        }, function (err) {
            console.log("Err" + err);
        });
    }
}




$scope.resetform = function () {
    $scope.selectedMember = {};
    //$scope.selectedMember = {};
    //$scope.Local = {};
    //$scope.Nhd = null;
    //$scope.Ndw = null;
    //$scope.Num = null;
    }




$scope.selectedMember = {  Code: "",sys_key:"", Latin:"" , Local:"", Hours_Day :"", Days_Week:"", Num_EndWork:""  } 

$scope.showInEdit = function (member)
{
    $scope.selectedMember = member;
    //$scope.selectedMember.Code = member;
    //$scope.selectedMember.Latin = member;
    //$scope.selectedMember.Local = member;
    //$scope.selectedMember.Hours_Day = member;
    //$scope.selectedMember.Days_Week = member;
    //$scope.selectedMember.Num_EndWork = member;
}

最佳答案

您可以在此处使用过滤器来检查重复项

var filtered= $filter('filter')($scope.contracts, function(value){
        return value.Staff_Type_Code === Contract.Staff_Type_Code ;
});

if(filtered.length > 0){
   console.log("duplicate exists");
}

关于javascript - 如何防止在Angularjs中插入重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46631033/

相关文章:

Javascript:如何导出 MIDI 文件?

javascript - 哈皮斯 : How to send POST objects array in POSTMAN

angularjs - AngularJS 单元测试中模拟 $compileProvider 的详细信息

javascript - session 存储在 window.location.replace 上丢失

javascript - jquery $ ('div' .html 不适用于第三方模块( Angular )

html - Bootstrap - 文本字段的边框颜色

javascript - 将导入语句转换为 Web 路径

javascript - 在 native javascript中动态插入框架集内的框架作为第一框架?

javascript - Bootstrap 多选 : clicking on dropdown disables all input and button elements on panel

javascript - 当我调整大小时,垂直导航栏是否与主体重叠?