2016-05-12 40 views
0

我试图从cordova s​​qlite中获取数据并将其添加到范围中。并绑定视图页面中的数据。但我得到错误“无法读取未定义的推送”,并且没有数据显示在视图页面中。

//我控制器

$scope.codesubmit=function(data){ 
     var query = "SELECT * FROM item_master WHERE menucode = ?"; 
     $cordovaSQLite.execute(db, query, [data.menucode]).then(function (res) { 
     alert("inside success"); 
$scope.items.push({"menucode":"+res.rows.item(0).menucode+","menuname":"+res.rows.item(0).menuname+","quantity":"+data.quantity+","price":"+res.rows.item(0).price+"}); 
      alert(items); 
    },function (err) { 
       console.error(err); 
      }); 

//我的看法页面

<tbody id=Tabledata> 
      <tr ng-repeat="item in items"> 
      <td>{{item.menucode}}</td> 
      <td>{{item.menuname}}</td> 
      <td>{{data.quantity}}</td> 
      <td>{{item.price}}</td> 
      <td>{{total}}</td> 
      <td><a class='delete' href='#' ng-click()id='"+res.rows.item(0).id+"'>Delete</a></td> 
      </tr> 
     </tbody> 

回答

1

您需要在开始使用它之前定义$ scope.items数组。

$scope.codesubmit=function(data){ 
$scope.items = []; //define the array here 
    var query = "SELECT * FROM item_master WHERE menucode = ?"; 
    $cordovaSQLite.execute(db, query, [data.menucode]).then(function (res) { 
    alert("inside success"); 
$scope.items.push({menucode: res.rows.item(0).menucode, menuname: res.rows.item(0).menuname,quantity: data.quantity, price: res.rows.item(0).price}); 
     alert(items); 
},function (err) { 
      console.error(err); 
     }); 

在你的函数定义的开始添加$scope.items = [];将创建一个空数组,你可以通过从数据库中检索到的数据填充。你也可以在全球定义它,如果你想在别的地方访问它。

+0

感谢您的答案。我知道它但“”menucode“:”+ res.rows.item(0).menucode +“”这行返回“”+ res.rows.item(0).menucode +“”。如何获得值,即菜单代码。 – Ranendra

+0

将您的代码'res.rows.item(0).menucode'放在双引号之外。里面的所有内容都被视为字符串。另外我不确定为什么你甚至需要'+'符号。我已经相应地编辑了我的答案。试试看。高兴地帮助:) –

+0

感谢您的帮助..它像魅力工作.. – Ranendra

0

似乎$ scope.items是不确定的。首先定义您的$ scope.items对象。

$scope.items = []; 
+0

在push之前添加此行将在每次push之前清空数组,因此该数组将只包含当前元素 –

+0

其实我只想说在过程之前定义$ scope.items对象。是的,如果他可以将此行添加为全局变量或类似的东西,那会更好。 – oguzhan00

相关问题