Javascript Ionic:控制器中的数据增加后,视图列表不会更新

Javascript 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

我是爱奥尼亚的新手,正在尝试动态添加项目列表。我有一个本地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 );
   };
 })
.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”调用函数