【问题标题】:unable to view data using $scope in angularjs无法在 angularjs 中使用 $scope 查看数据
【发布时间】:2016-05-12 11:45:01
【问题描述】:

我正在尝试从 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>

【问题讨论】:

    标签: android angularjs cordova angularjs-scope


    【解决方案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 = []; 将创建一个空数组,您可以使用从数据库中检索到的数据填充该数组。如果您想在其他地方访问它,也可以全局定义它。

    【讨论】:

    • 感谢您的回答。我明白了,但是 ""menucode":"+res.rows.item(0).menucode+"" 这行返回 ""+res.rows.item(0).menucode+""。如何获取值,即 menucode。 .
    • 把你的代码res.rows.item(0).menucode放在双引号外面。里面的所有内容都被视为字符串。我也不确定你为什么需要+ 标志。我已经相应地编辑了我的答案。请试一试。乐于助人:)
    • items[] 数组包含表中显示的数据。如何获取表的所有数据并将其存储在 sqlite 数据库中。直到现在我已经尝试了 $scope.addsaleandsaledetails=function(){控制台.log($scope.items);变量索引 = 0; $scope.items.forEach(function (item) { console.log('item #' + (index++) + ': ' + JSON.stringify(item)); }); }
    • 我认为您必须对 $scope.items 的每一行执行插入查询。你的方法对我来说很好。你有什么问题吗?
    • 我在控制台中没有得到任何数据。它只显示 []。我想我无法获取项目。一旦我得到表中可用的项目。然后我将执行插入查询。
    【解决方案2】:

    似乎 $scope.items 未定义。首先定义你的 $scope.items 对象。

    $scope.items = [];
    

    【讨论】:

    • 在 push 之前添加这一行将在每次 push 之前清空数组,因此数组将只包含当前元素
    • 其实我只是想说在流程之前定义 $scope.items 对象。是的,如果他可以将此行添加为全局变量或类似的东西会更好。
    猜你喜欢
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多