从平板堆中删除平板电脑

时间:2018-03-24 11:59:14

标签: javascript mean-stack

您好我想知道是否有人可以帮我从容器(数组)中删除平板电脑,我将它们添加到MEAN堆栈中。

enter image description here

我的后端容器控制器

exports.updateContainer = function (req, res) {
     console.log("container update backend controller called", req.body);
    Container.findOneAndUpdate({ _id: req.params.id }, { $set: req.body }, { 'new': true })
        .then( function (container) {
            console.log("container",container);
            if (container != null) {
                return res.json(container);
            }
        })
        .catch( function (err) {
            return res.json(err);
        });

我的前端添加到容器控制器工作,我在删除它们时遇到了麻烦,在线查看示例我看到拼接方法被调用很多但是我无法让它工作,说我的逻辑可能是错误的无论如何,我一直在努力研究MEAN堆栈和JavaScript

 $scope.addTabletToContainer = function(tablet) {
            var container = $scope.currentContainer;

            console.log("****  container,", container);
            console.log("**** tablet to add", tablet);

            container.tablets.push(tablet);
            console.log("new tablets", container.tablets);


            containerService.updateContainer(container) 
            .success(function(data) {
               console.log("data, ",  data);

            })
            .error(function (err) {
                $location.path("./landingpage");
            });
        };

   // not working yet
        $scope.removeTabletFromContainer = function(tablet){
            var container = $scope.currentContainer;
            var index = container.tablets.indexOf(tablet);

            container.splice(index,1);

            containerService.updateContainer(container) 
            .success(function(data) {
               console.log("data, ",  data);

            })
            .error(function (err) {
                $location.path("./landingpage");
            });
        };

我的路线文件中的容器端点

var ContainerApi = require('./api/tablet/controller/container');

api.get('/getContainers', ContainerApi.getContainers);
    api.get('/getContainer/:id', ContainerApi.getContainer);
    api.delete('/deleteContainer/:id', ContainerApi.deleteContainer);
    api.post('/createContainer', ContainerApi.createContainer);
    api.put('/updateContainer/:id', ContainerApi.updateContainer);

我的html片段

<ul  class="tablets" >
                    <li id="tabsincontainer" ng-repeat="tablet in currentContainer.tablets | filter:{name: query } | orderBy:orderProp" class="thumbnail">

                            <b>    Name:</b>  {{tablet.name}} , 
                            <b>    Dose:</b>  {{tablet.dose}} , 
                            <b>    Amount To Take:</b>  {{tablet.amountToTake}} , 
                            <b>    Total Amount:</b>  {{tablet.totalAmount}}

                            <button class="btn btn-xs pull-right btn-danger" ng-click="removeTabletFromContainer(tablet)">Remove</button>

                </div> 

我现在收到此错误

angular.js:9937 TypeError: container.splice is not a function
    at a.$$childScopeClass.$$childScopeClass.$scope.removeTabletFromContainer (viewContainersController.js:90)

2 个答案:

答案 0 :(得分:0)

我认为你需要从像

这样的container.tables拼接
container.tablets.splice(index,1);

答案 1 :(得分:0)

该错误消息告诉您splice不是container的成员,或者如果是function,则不是splice的成员。由于functioncontainer数组,因此问题主要在于var container = $scope.currentContainer; 不是数组。看一下容器的定义:

container

splice不是数组,因为在这种情况下,您无法获得向我们显示的错误消息,因此您无法调用其tablets方法。由于您打算从tablets中删除,因此请查看您案例中tablets的内容。由于containerindexOf的成员并且有pushfunction tablets,因此可以安全地假设container.tablets.splice是数组您正在寻找,因此您需要致电container.splice而不是function triggerEvent(el, type){ var e = document.createEvent('HTMLEvents'); e.initEvent(type, false, true); el.dispatchEvent(e); }