Я пытаюсь выяснить, возможно ли это, в javascript
У меня есть массив объектов, называемых тележками, которые содержат product.quantity, и я хочу использовать значение cart.length в вычислении, но я продолжаю получать NaN, хотя тип - это число. Может ли кто-нибудь помочь, пожалуйста.
Это то, что я пробовал до сих пор:
$scope.getCartTotals = function() {
var totalInCart = 0;
cartCount = $scope.cart.length;
$scope.cart.forEach(function(product) {
totalInCart += cartCount * product.quantity;
});
return totalInCart;
};
<body ng-controller="StoreController">
<div ng-show="cart.length > 0">{{getCartTotals()}}</div>
</body>
Вы добавляете к undefined
, что делает NaN
. Вы должны инициализировать totalInCart
в 0
:
var total = 0,
cartCount = $scope.cart.length,
totalInCart = 0;
Я нашел ответ, и это было то, что я пытался вычислить с использованием неправильных периметров целиком и не имел никакого отношения к длине массива, поэтому весь этот вопрос теперь недействителен, спасибо за все полезные комментарии.
На самом деле я не имею представления о вашей телеге объекта structure.According
к предоставленной информации об объекте корзины я создал дем в plunker. Таким образом, вы можете проверить ниже ссылку plunker https://plnkr.co/edit/4tYc9UjrzqQXvFJuvW5Y?p=preview
Вы используете ng-show
здесь, это вызовет метод getCartTotals
для каждого значения cart.length
.
ng-show
просто скрыть/отобразить, переключая css, но ng-if
не будет отображать HTML, если условие ложно и, следовательно, не getCartTotals
выполнение getCartTotals
Таким образом, вы можете использовать либо ng-if
или вы можете просто сделать нуль/неопределенные проверки в getCartTotals
метода cart.length
и product.quantity
totalInCart
. Т.е.:var totalInCart = 0