Я поставлю этот вопрос, заявив, что $scope.$apply()
не работает, когда я его вызываю внутри addToOrder()
. Моя консоль выводит следующее сообщение об ошибке:
Error: [$rootScope:inprog] $apply already in progress
http://errors.angularjs.org/1.2.25/$rootScope/inprog?p0=%24apply
Что касается вопроса ядра, когда я пытаюсь установить количество моего item
объекта перед отправкой его в мой массив порядка, он всегда возвращает неопределенной.
.controller('MenuItemCtrl', ['$scope', '$state', '$stateParams', '$localstorage', 'MenuItem',
function($scope, $state, $stateParams, $localstorage, MenuItem) {
MenuItem.get($stateParams.menuItemId)
.success(function(data) {
$scope.menuItem = data;
});
$scope.addToOrder = function() {
var item = {
name: $scope.menuItem.name,
id: $scope.menuItem.objectId,
qty: $scope.quantity,
price: $scope.menuItem.price,
ttlPrice: ($scope.menuItem.price)
}
$localstorage.order.push(item);
}
});
Вот мой HTML:
<label class="item item-input col">
<input type="number" ng-model="quantity" value="1">
</label>
<div class="item col">{{quantity}}</div><!-- verify that $scope.quantity exists -->
<button class="button button-full button-positive" ng-click="addToOrder()">
Add to Cart
</button>
Почему $scope.quantity
возвращение неопределенными даже если связывание данных происходит и т
ASIDE: $localstorage
является модуль I определяется как обертка AngularJS для доступа к исходному объекту window.localStorage
, если вам интересно.
EDIT: Вот мой файл app.js, где я определяю свои состояния. Ниже приведены соответствующие menu
и menu-details
состояния для справки ...
.state('tabs.menu',
{ url: '/menu',
views: {
'tab-menu': {
controller: 'MenuCtrl',
templateUrl: 'views/menu.list.html'
}
}
})
.state('tabs.menu-details',
{ url: '/menu-details/:menuItemId',
views: {
'tab-menu': {
controller: 'MenuDetailCtrl',
templateUrl: 'views/menu.details.html',
resolve: {
menuItemId: ['$stateParams', function($stateParams) {
return $stateParams.menuItemId;
}]
}
}
}
})
Вам нужно всего лишь $ scope.apply если 'addToOrder' вызывается событие за пределами углового цикла, такие как геолокация называет –
если' $ apply' бросает исключение, тогда нет смысла говорить о дальнейшем выполнении вашего кода. – akonsu
Извините, '$ apply()' является артефактом в моем контроллере. Пожалуйста, не обращайте внимания. @akonsu –