我會通過說明$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
回報不確定即使數據發生結合和T
ASIDE:$localstorage
是我定義爲一個模塊一個AngularJS包裝器,用於訪問本機window.localStorage
對象,以防萬一你想知道。
編輯:這是我的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'由一個事件的角度週期之外調用,如調用地理位置如果 – 2014-12-03 19:55:51
'$ apply'拋出例外,那麼談論進一步執行你的代碼是沒有意義的。 – akonsu 2014-12-03 19:56:41
對不起,'$ apply()'是我控制器中的一個工件。請忽略。 @akonsu – 2014-12-03 19:57:38