javascript - 从数组中获取未移动的项目并重新显示它们

标签 javascript angularjs protocols

大家好,我有一个购物车列表,一次显示 3 件商品。 我可以使用 javascript 协议(protocol) shift 将项目移动一个并显示列表中的下一个项目,使其看起来像是在滚动。我使用 Push 将移位的项目传递到新数组中。它确实显示添加的项目,但不会转移到以前的项目。 这是我到目前为止得到的jsfiddle 这是该网站的实时 View live site

(function(){
var app = angular.module("moxierevere",['ngCart']);
app.filter('myFilter', function () {
    return function (items, count) {
        var result = [];
        for (var i = 0; i < items.length && result.length < count; ++i) {
            if (items[i].available > 0) result.push(items[i]);
        }
        return result;
    };
});
app.controller("ItemsController",['ngCart', '$scope', function(ngCart, $scope){

ngCart.setTaxRate(0.00);
ngCart.setShipping(2.99); 
this.items = allItems;
$scope.itemsPerListing = 3;
var shifteditem = [];
var shifteditems = [];

 $scope.nextPage = function () {
  this.items = allItems;
    if($scope.itemsPerListing >= this.items.length)
    {
        $scope.itemsPerListing =  this.items.length;
    }
    else
    {
    shifteditem.push( $scope.items.shift());
    console.log(shifteditem);
    }   
  };

$scope.prevPage = function() {
this.items = allItems;
shifteditems.unshift(shifteditem);
console.log( shifteditems);

};
}]);
var allItems = [
{
id:0,
name: "item1",
image: "http://dreamcpu.com/moxierevere/images/br.JPG" ,
price: 2.00,
available: 10,
size: "S , M, L"
},
{
id:1,
name: "item2",
image: "http://dreamcpu.com/moxierevere/images/avacados.JPG" ,
price: 5.00,
available: 10,
size: "S , M, L"
},
{
id:2,
name: "item3",
image: "http://dreamcpu.com/moxierevere/images/chicha.JPG" ,
price: 2.00,
available: 3,
size: "S , M, L"
},
{
id:3,
name: "item4",
image: "http://dreamcpu.com/moxierevere/images/lomo.JPG" ,
price: 6.00,
available: 4,
size: "S , M, L"
},
{
id:4,
name: "item5",
image: "http://dreamcpu.com/moxierevere/images/satuna.JPG" ,
price: 2.00,
available: 5,
size: "S , M, L"
},
{
id:5,
name: "item5",
image: "http://dreamcpu.com/moxierevere/images/satuna.JPG" ,
price: 2.00,
available: 5,
size: "S , M, L"
},
{
id:6,
name: "item5",
image: "http://dreamcpu.com/moxierevere/images/satuna.JPG" ,
price: 2.00,
available: 5,
size: "S , M, L"
}
];  
})();

最佳答案

您不希望将包含完整数据集的项目从数组中移出。相反,获取滚动索引并将 3 个项目复制到新的范围变量中。您的滚动按钮应该增加或减少 $scope.index 变量。

$scope.$watch('index', function(newVal, oldVal){
    $scope.displayedItems = [$scope.items[newVal], $scope.items[newVal + 1], $scope.items[newVal + 2] ];
});

监视索引并更新显示的项目。

关于javascript - 从数组中获取未移动的项目并重新显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31412733/

相关文章:

javascript - C# - 当网页上的 javascript 调用 window.close() 时关闭 System.Windows.Forms.WebBrowser

javascript - 打包 Chrome 应用程序 - 自动 Google 登录?

objective-c - 找不到 XXX 的协议(protocol)定义

javascript - 同时执行 javascript 和 asp.net 渲染

javascript - 如何在React页面加载之前提前预加载i18n?

javascript - `angular-ui-grid` 中的工具提示无法正常工作

javascript - Angular 2 中的 Treeview - ng-include 的替代方案并在组件之间传递整个对象

html - 在 Bootstrap 中更改事件类 CSS

python - 签名中带有 TypeVar 的协议(protocol)的实现者不能使用自己的类型

具有 self 类型要求的协议(protocol)的 Swift 类型删除