【问题标题】:Can't bind data to view angularjs无法绑定数据查看angularjs
【发布时间】:2015-12-18 14:53:12
【问题描述】:

我在使用 ionic 框架中的 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 方法中吗?

【问题讨论】:

    标签: javascript angularjs ionic firebase angularfire


    【解决方案1】:

    不太熟悉 Firebase,但我假设它是您用来提取数据的第 3 方服务。您的数据更新可能发生在角度摘要周期之外。将数据附加到范围后,只需添加它即可。

    $scope.digest()

    【讨论】:

      【解决方案2】:

      嘿,我猜你的 Category 依赖项是一个服务被注入到你的控制器中?在那种情况下,我通常会写这样的东西。

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

      这将在您在控制器中查询服务后存储您的类别。之后,只需在您的 html 中使用类似 NG-REPEAT 之类的东西。

      <li ng-repeat='cat in categories'>
          {{cat.name}}
          {{cat.id}}
      </li>
      

      【讨论】:

      • 我可以将我从 firebase 获得的类别数据绑定到 {{category.Category}}。但我无法将搜索结果绑定到{{show}}
      【解决方案3】:

      @YerkenTussupekov 关于 3rd 方服务和摘要周期是正确的。

      That's why at Firebase we created 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;
      }
      

      【讨论】:

      • 也许我的问题不够清楚。正如我所说,我正在尝试将我的搜索结果绑定到我的视图。但是在这里我试图将搜索结果绑定到{{show}} 我看不到您如何将搜索结果绑定到您的回答中的{{show}} :( 你能解释一下吗?:)
      • 我可以将我从 firebase 获得的类别数据绑定到我的视图 {{category.Category}}。我只是无法将搜索结果绑定到{{show}}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      相关资源
      最近更新 更多