您好我想知道是否有人可以帮我从容器(数组)中删除平板电脑,我将它们添加到MEAN堆栈中。
我的后端容器控制器
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)
答案 0 :(得分:0)
我认为你需要从像
这样的container.tables拼接container.tablets.splice(index,1);
答案 1 :(得分:0)
该错误消息告诉您splice
不是container
的成员,或者如果是function
,则不是splice
的成员。由于function
是container
数组,因此问题主要在于var container = $scope.currentContainer;
不是数组。看一下容器的定义:
container
splice
不是数组,因为在这种情况下,您无法获得向我们显示的错误消息,因此您无法调用其tablets
方法。由于您打算从tablets
中删除,因此请查看您案例中tablets
的内容。由于container
是indexOf
的成员并且有push
和function
tablets
,因此可以安全地假设container.tablets.splice
是数组您正在寻找,因此您需要致电container.splice
而不是function triggerEvent(el, type){
var e = document.createEvent('HTMLEvents');
e.initEvent(type, false, true);
el.dispatchEvent(e);
}
。