【问题标题】:ng-repeat in Angular.js not working as expectedAngular.js 中的 ng-repeat 未按预期工作
【发布时间】:2017-02-22 16:46:13
【问题描述】:

我有一个 JavaScript 对象,我将它推送到一个数组中,代码如下:

    //Firebase Retrieve Data
  var ref = firebase.database().ref().child("pelanggan");
  ref.on("child_added", function(snapshot) {
  var key = snapshot.key;
  console.log("SALES ID : " + key);

    var pelangganArr = new Array();
    var ref2 = firebase.database().ref().child("pelanggan").child(key);
    ref2.on('child_added', function(data) { 
    var pelanggan = new Object(); 
    pelanggan.alamat = data.val().alamat;         
    pelanggan.email = data.val().email;
    pelanggan.identitas = data.val().identitas;
    pelanggan.layanan = data.val().layanan;
    pelanggan.lo = data.val().lo;
    pelanggan.lt = data.val().lt;
    pelanggan.nama = data.val().nama;
    pelanggan.noHp = data.val().noHp;

    pelanggan.salesId = key;

    pelangganArr.push(pelanggan);
    console.log(pelanggan.salesId+" : "+pelanggan.nama+","+pelanggan.identitas+","+pelanggan.alamat+","+pelanggan.email);

我使用 ng-repeat 在 html 中显示它,在我得到的控制台上:

Sales Controller loaded..
sales.js:120 sales01 : Endang,85764321,Bintaro,een.cyber@gmail.com
sales.js:120 sales01 : Gugi Pratama,1234567894,Jl. Mampang Prapatan,gugi.pratama@gmail.com
sales.js:120 sales01 : Endang,85764321,Bintaro,een.cyber@gmail.com
sales.js:120 sales01 : Gugi Pratama,1234567894,Jl. Mampang Prapatan,gugi.pratama@gmail.com
sales.js:120 sales01 : Endang,85764321,Bintaro,een.cyber@gmail.com
sales.js:120 sales01 : Gugi Pratama,1234567894,Jl. Mampang Prapatan,gugi.pratama@gmail.com
sales.js:120 sales02 : imam farisi,123456789,Jl. Pejaten Raya No.1, Pasar Minggu,imamfarisi@gmail.com
sales.js:120 sales02 : Budi,1234567891,Jl. Ragunan Raya No. 1, Jakarta Selatan,budi@gmail.com
sales.js:120 sales02 : Riza Putriyani,1234567892,Jl. Kemang Raya No. 1, Jakarta Selatan,riza1993@gmail.com
sales.js:120 sales02 : imam farisi,123456789,Jl. Pejaten Raya No.1, Pasar Minggu,imamfarisi@gmail.com
sales.js:120 sales02 : Budi,1234567891,Jl. Ragunan Raya No. 1, Jakarta Selatan,budi@gmail.com
sales.js:120 sales02 : Riza Putriyani,1234567892,Jl. Kemang Raya No. 1, Jakarta Selatan,riza1993@gmail.com
sales.js:120 sales02 : imam farisi,123456789,Jl. Pejaten Raya No.1, Pasar Minggu,imamfarisi@gmail.com
sales.js:120 sales02 : Budi,1234567891,Jl. Ragunan Raya No. 1, Jakarta Selatan,budi@gmail.com
sales.js:120 sales02 : Riza Putriyani,1234567892,Jl. Kemang Raya No. 1, Jakarta Selatan,riza1993@gmail.com

但我的观点是空白的,我写了这样的脚本:

<tbody ng-controller="SalesCtrl as t">
   <tr ng-repeat="pelanggan in pelangganArr">
      <td>{{pelanggan.alamat}}</td>
      <td>{{pelanggan.email}}</td>
      <td>{{pelanggan.lo}}</td>
      <td>{{pelanggan.lt}}</td>
      <td>{{pelanggan.nama}}</td>
      <td>{{pelanggan.noHp}}</td>
      <td></td>
      <td><a class="btn btn-success" ng-click="showEditSalesForm(sales)">Edit</a></td>
      <td><a class="btn btn-danger" ng-click="removeSales(sales)">Delete</a></td>
   </tr>
</tbody>

渲染它。

我是 Angular.js 的新手。

【问题讨论】:

  • pelangganArr 应该是作用域变量
  • 你能告诉我怎么写吗,因为我知道使用范围应该使用ref。但是我在代码中有两个引用,之后我创建了对象。那么我应该在什么上使用范围呢?谢谢你
  • 在您的控制器中,您是否将 this 分配给 var 变量。像这样var t = this
  • 你的 ng-app 在哪里?你能创建一个这样的 plunker 吗?

标签: javascript angularjs firebase firebase-realtime-database


【解决方案1】:

试试

<tr ng-repeat="pelanggan in t.pelangganArr">

【讨论】:

  • 试试this.pelangganArr = pelangganArr;
  • 我试过了,$scope.pelangganArr = []; $scope.pelangganArr.push(pelanggan); $scope.info=$scope.pelangganArr;还没用
【解决方案2】:

在您的控制器中将 pelangganArr 声明为 $scope.pelangganArr。 只有作用域变量在 DOM 中被 Angular 识别并提供 2 路绑定。

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多