У меня есть некоторые проблемы с привязкой моих данных к моему взгляду с помощью angularjs в ионной структуре.

Это мой controller.js:

.controller('InventoryCtrl', function($scope, Category, Inventory) {
$scope.categories = Category;


$scope.searchInventory = function(category){
var word = category.Category;

var ref = new Firebase('https://vivid-heat-2430.firebaseio.com/');

var invenRef = ref.child('Inventories');
var prodRef = invenRef.child('Products');


invenRef.orderByChild("Products").on("child_added", function(snapshot) {
  var data = snapshot.val();
  var store = data.Inventory;
  var prod = data.Products;
  var test = Object.keys(prod);    

  for( var i = 0; i < test.length; i++){
    if (test[i] == word) {
      console.log(test[i]);
      console.log("Storage place: " + data.Inventory + " Datum inventaris: " + data.Date);
      $scope.show= test[i];

    };

  };

});

};
})

Здесь я получаю свои продукты из моего массива. Тогда я сравниваю это. Это даст мне подходящие объекты, а также место хранения, к которому оно принадлежит. Я могу войти в это в моей консоли. Но когда я пытаюсь связать это с моим взглядом. Это мне ничего не дает.

это мой index.html:

<ion-content>
    <p><b>Zoek categorie</b></p>
  <ion-scroll direction="y" >
    <div style="max-height: 300px" ng-controller="InventoryCtrl">
      <ion-list>
        <ion-radio ng-repeat="category in categories" class="item-accordion" ng-model="checked.check" value="{{category.Category}}" ng-click="searchInventory(category)">
          <p>{{category.Category}}</p>
        </ion-radio>
        <br>
      </ion-list>
    </div>

    <div>
        <ion-list>
            <ion-item>
              {{show}}                  
            </ion-item>
        </ion-list>
      </div>
  </ion-scroll>
  </ion-content>

И я не понимаю, что я сделал неправильно ... Это потому, что мой $scope.show все еще находится внутри метода .on?

1
Season 18 Дек 2015 в 17:53

3 ответа

Лучший ответ

Не очень знаком с Firebase, но я предполагаю, что это сторонний сервис, который вы используете для извлечения данных. Возможно, обновление данных происходит вне цикла углового дайджеста. Просто добавьте это после того, как вы закончите прикреплять данные к области.

$ Scope.digest ( )

2
Yerken 18 Дек 2015 в 14:59

@YerkenTussupekov прав насчет сторонних сервисов и цикла дайджеста.

Вот почему в Firebase мы создали AngularFire.

AngularFire - это модуль Angular, который предоставляет набор сервисов для синхронизированных сборов и аутентификации.

angular.module('app', ['firebase']) // include it in the dep array
  .constant('FirebaseUrl', '<my-firebase-app>') // https://vivid-heat-2430.firebaseio.com/ in your case
  .service('rootRef', ['FirebaseUrl', Firebase)
  .factory('categoryArray', CategoryArray)
  .controller('MyCtrl', MyController);

function CategoryArray(rootRef, $firebaseArray) {
  var invenRef = rootRef.child('Inventories');
  return $firebaseArray(invenRef);
}

function MyController($scope, categoryArray) {
  $scope.category = categoryArray;
}
0
David East 18 Дек 2015 в 21:19

Эй, я полагаю, ваша зависимость от категории - это сервис, внедряемый в ваш контроллер? В этом случае я обычно пишу что-то вроде этого.

.controller('InventoryCtrl', function($scope, Category, Inventory) {
    $scope.categories = [];
    Category.query(funciton(categories){
        $scope.categories = angular.copy(categories);
    });

Это будет хранить ваши категории после того, как вы запросите свой сервис в вашем контроллере. После этого просто используйте что-то вроде NG-REPEAT в вашем html-коде.

<li ng-repeat='cat in categories'>
    {{cat.name}}
    {{cat.id}}
</li>
0
Evan Burbidge 18 Дек 2015 в 14:58