2017-08-09 57 views
1

我試圖來顯示使用angularjs對象。但在html中顯示爲未定義。火力地堡和Angularjs對象範圍陣列未定義

app1.controller('ctrl1' , function($scope){ 
    categories = []; 
    var dbRef = firebase.database().ref().child('Categories/'); 
    dbRef.once('value', snap => { 

    snap.forEach(function(childSnap) { 
     //CATEGORY MODEL 
     var category = { 
      name : "", 
      id : "", 

      subCategories: { 
       name: "", 
       id: "" 
      } 

     }; 
     category.id = childSnap.val().id 
     category.name = childSnap.val().name 
     category.subCategories = childSnap.val().subCategories 
     categories.push(category) 
    }) 

    }).then(() => { 
    $scope.allcats = categories; 
    }); 
}); 

和HTML

<div id="nav-aside " class="nav" ng-controller="ctrl1"> 
       {{allcats}} 
      <ul class="nav-aside-list" ng-repeat="categories in allcats"> 
       <li><span></span><a href="#">{{categories.name}}</a></li> 
      </ul> 
      </div> 

這行不通。任何人都可以幫忙? 在此先感謝!

+0

爲什麼你正在使用類推,爲什麼不直接$ scope.allcats? –

+0

@GauravSrivastava反正什麼也不顯示。我試過:( –

+0

做控制檯日誌右下方categories.push,看是否有數據來 –

回答

0

你的代碼改成這樣:

app1.controller('ctrl1' , function($scope){ 
     $scope.allcats = []; 
     var dbRef = firebase.database().ref().child('Categories/'); 
     dbRef.once('value', snap => { 

     snap.forEach(function(childSnap) { 
      //CATEGORY MODEL 
      var category = { 
       name : "", 
       id : "", 

       subCategories: { 
        name: "", 
        id: "" 
       } 

      }; 
      category.id = childSnap.val().id 
      category.name = childSnap.val().name 
      category.subCategories = childSnap.val().subCategories 
      $scope.allcats.push(category); 
      $scope.$apply(); 
     }) 

     }).then(() => { 
     console.log($scope.allcats); 
     }); 
    }); 
+0

異步問題。這個作品與控制檯,但在HTML文件中沒有數據來。因爲HTML運行一次和腳本之前,也許 –

+0

上雙向@AralbayIssatayev角的作品結合它會自動反映HTML模板的變化不做任何事情。分享一些你的配置代碼,可能是你有角的設置是錯誤的。 –

+0

@AralbayIssatayev我編輯我的答案檢查,如果其工作。 –