gpt4 book ai didi

javascript - ionic : View list is not updating after data is increased in the controller

转载 作者:行者123 更新时间:2023-11-28 05:06:41 25 4
gpt4 key购买 nike

我是 Ionic 新手,正在尝试动态添加项目列表。我有一个本地 json 文件。我的默认 dash.html 中有一个按钮。当我单击按钮时,它将读取条形码并检查条形码是否在本地 json 文件中可用。数据会通过app.js发送到下一页,如下代码。

Controller .js

    $scope.scanBarcode = function() {
$cordovaBarcodeScanner.scan().then(function(imageData) {
// alert(imageData.text);
if(imageData.text.length!=0){
console.log("Barcode Format -> " + imageData.format);
console.log("Cancelled -> " + imageData.cancelled);
var alertPopup = $ionicPopup.alert({title: imageData.text});
alertPopup.then(function(res) {
$state.go('tablelist',{title: imageData.text});
});
}else{
alert("Not captured properly.try again");
}

},
function(error) {
console.log("An error happened -> " + error);
});
};

app.js

 .state('tablelist', {
url: '/tablelist/:title',
views: {
'menuContent': {
templateUrl: 'templates/tablelist.html',
controller: 'TableCtrl'
}
}
})

所以我将获取 $stateparams 中的数据,然后我可以在下一页中进行比较和添加。

 .controller('TableCtrl', function($scope,$ionicPopup, $cordovaBarcodeScanner, $http, $stateParams) {
$scope.users = []; //declare an empty array
$scope.barData;
$http.get("data/menulist.json").success(function(response){
// alert($stateParams.title);
// if($stateParams.title==response.barcode){
$scope.barData=$stateParams;

for(var i=0;i<response.length;i++){
if($scope.barData.title==response[i].barcode){
$scope.users.push(response[i]);
}
}
});

$scope.scanBarcode = function() {
$cordovaBarcodeScanner.scan().then(function(imageData) {
if(imageData.text.length!=0){
$http.get("data/menulist.json").success(function(response){
for(var i=0;i<response.length;i++){
if(imageData.text==response[i].barcode){
$scope.users.push(response[i]);
$scope.apply();
}
}
});
}else{
alert("Not captured properly.try again");
}
},
function(error) {
console.log("An error happened -> " + error);
});
};


$scope.removeRow = function(user){
$scope.users.splice( $scope.users.indexOf(user), 1 );
};
})

在第二页中,我再次有一个读取条形码的按钮,我想将其添加到同一列表中。这里我没有使用sqlite。

这是我的tablelist.html

 <ion-content>
<button class="button button-block button-positive" ng-click="scanBarcode()">Add Prduct</button>
<ion-list>
<div class="bs-component" ng-controller="TableCtrl">
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Qty</th>
<th>Product</th>
<th>Image</th>
<th>Amount</th>
</tr>
</thead>
<tbody>
<div ng-app>
<tr ng-repeat="user in users">
<td>
<select type="number" ng-model="quantity">
<option selected="selected">1</option>
<option>2</option>
<option>3</option>
</select><br/>
</td>
<td>{{user.first_name}}</td>
<td><img class="td-img" src="{{user.image}}"/></td>
<td>Rs: {{user.price*quantity}}
<input type="button" value="Remove" class="btn btn-primary" ng-click="removeRow(user)"/>
</td>
</tr>
</div>
</tbody>
</table>
</div>

</ion-list>
</ion-content>

我可以看到数据正在添加到列表中,但当我在循环内部或外部给出 $scope.apply() 时,数据不会更新。

谁能帮我解决这个问题吗?许多人提到 $scope.apply() 会起作用。但这没有帮助。提前致谢。

最佳答案

将数量乘以价格:

<div>
<tr ng-repeat="user in users">
<td>
<select type="number" ng-model="user.quantity">//Changed quantity to user level scope.
<option selected="selected">1</option>
<option>2</option>
<option>3</option>
</select><br/>
</td>
<td>{{user.first_name}}</td>
<td><img class="td-img" src="{{user.image}}"/></td>
<td ng-if="user.quantity">Rs: {{user.price*user.quantity}}//checking if quantity has been selected
<input type="button" value="Remove" class="btn btn-primary" ng-click="removeRow(user)"/>
</td>
</tr>
</div>

这应该可以做到。 ng-app 是 Angular 的引导指令,应该严格用于单独引导应用程序。

关于javascript - ionic : View list is not updating after data is increased in the controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41689226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com