Javascript Ionic:控制器中的数据增加后,视图列表不会更新
我是爱奥尼亚的新手,正在尝试动态添加项目列表。我有一个本地json文件。我在默认的dash.html中有一个按钮。当我点击按钮时,它将读取条形码,并检查条形码是否在本地json文件中可用。数据将通过app.js发送到下一页,如下代码所示 Controller.jsJavascript Ionic:控制器中的数据增加后,视图列表不会更新,javascript,angularjs,json,ionic-framework,Javascript,Angularjs,Json,Ionic Framework,我是爱奥尼亚的新手,正在尝试动态添加项目列表。我有一个本地json文件。我在默认的dash.html中有一个按钮。当我点击按钮时,它将读取条形码,并检查条形码是否在本地json文件中可用。数据将通过app.js发送到下一页,如下代码所示 Controller.js $scope.scanBarcode = function() { $cordovaBarcodeScanner.scan().then(function(imageData) { // alert(i
$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 );
};
})
.controller('TableCtrl',函数($scope、$ionicPopup、$cordovaBarcodeScanner、$http、$stateparms){
$scope.users=[];//声明一个空数组
$scope.barData;
$http.get(“data/menulist.json”).success(函数(响应){
//警报($stateparms.title);
//if($stateParams.title==response.barcode){
$scope.barData=$stateParams;
对于(var i=0;i数量乘以价格:
<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>
//已将数量更改为用户级范围。
1.
2.
3.
{{user.first{u name}
Rs:{{user.price*user.quantity}}//检查是否已选择数量
这应该可以做到。ng应用程序是Angular的引导指令,应严格用于单独引导应用程序。数量乘以价格:
<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>
//已将数量更改为用户级范围。
1.
2.
3.
{{user.first{u name}
Rs:{{user.price*user.quantity}}//检查是否已选择数量
这应该可以做到。ng应用程序是Angular的引导指令,应该严格用于单独引导应用程序。而不是$scope.users.apply(),请尝试:$scope.$apply();@BalaAbhinav我两个都试过了。但都不起作用。1.抛出了任何错误吗?2.您从上一页获得的用户是否显示正确?@BalaAbhinav TypeError:$scope.apply不是拼写错误的函数:它应该是$scope。$apply()(注意$before apply)。这是正确的syntaxInstead$scope.users.apply(),Try:$scope.$apply();@BalaAbhinav我两个都试过了。但都不起作用。1.抛出了任何错误吗?2.您从上一页获得的用户是否显示正确?@BalaAbhinav TypeError:$scope.apply不是拼写错误的函数:它应该是$scope。$apply()(注意$before apply)。这是正确的语法。我收到相同的错误。'error:[$rootScope:inprog]$digest已在进行中'您可以打开一个plunkr()吗使用你的代码并发布到它的链接。我会查看它。我没有使用过该工具。我发布了重要文件索引、破折号、表格列表、控制器和app.js。请查看此处。请告诉我你是否需要任何其他信息。你可以删除ng controller=“TableCtrl”删除中的标记并重试(&R)。您的控制器看起来很好。问题可能与视图有关。如果我删除了TableCtrl,那么如何从控制器“TableCtrl”调用函数?我收到了相同的错误。错误:[$rootScope:inprog]$digest已在进行中'您可以打开plunkr()吗使用你的代码并发布到它的链接。我会查看它。我没有使用过该工具。我发布了重要文件索引、破折号、表格列表、控制器和app.js。请查看此处。请告诉我你是否需要任何其他信息。你可以删除ng controller=“TableCtrl”删除中的标记并重试(&R)。您的控制器看起来很好。问题可能与视图有关。如果删除TableCtrl,如何从控制器“TableCtrl”调用函数