【问题标题】:TypeError: $value undefined in angularjsTypeError: $value undefined in angularjs
【发布时间】:2015-01-26 04:39:50
【问题描述】:

在html文件中,

 <tr class="odd" ng-click="parseProductId(product.product_id);show = !show">
   <td>{{product.product_id}}</td>
   <td>{{product.name}}</td>
   <td>{{product.quantity}}</td>
   <td>{{order.currency_code}} {{product.unit_price}}</td>
   <td>{{order.currency_code}} {{product.unit_discount}}</td>
   <td>{{order.currency_code}} {{product.price}}</td>
   <td id="arrow"><a>Write A Review</a></td>
 </tr>

在控制器中,

var review;
$scope.parseProductId = function(id){
  review = $firebase((new Firebase('https://...')).child('product_reviews/' + id)).$asArray();
}

我在控制器中有另一个添加函数,当用户单击视图 html 中的添加按钮时,将调用 add() 并将数据保存到 firebase。

$scope.add = function (id, name, index) {
  $scope.product_id = id;
  $scope.product_name = name;
  $scope.$broadcast('show-errors-reset');

  var save = review.$add({
    reviewTitle: $scope.reviewTitle,
    review: $scope.review,
    rating_quality: $scope.rating,
    rating_pricing: $scope.rating1
  });

但是,显示此错误, TypeError:无法读取未定义的属性“$add”

【问题讨论】:

  • 你自己写的 - Cannot read property '$add' of undefined。在代码中的哪一点,$add 属性试图在对象上被访问?
  • 我想将用户的数据保存到 firebase,所以我使用 $add 能够将数据保存到 firebase。但是firebase链接将根据用户的product_id定向。
  • 你在一个方法中声明了review,它没有被定义,这意味着你在运行$scope.add()之前没有调用parseProductId。根据您在此处剪切示例以在代码中提供尽可能简短的图片(而不是完整的图片)的有趣方式,我们无法猜测确切的细节。

标签: angularjs firebase angularfire


【解决方案1】:

尝试通过范围访问review,没有范围好像没有定义:

var save = $scope.review.$add({

【讨论】:

  • 不能同时使用$value,显示同样的错误未定义
  • 对不起什么?我不明白你的意思。
  • 在 parseProductId 函数中,我还声明了其他变量,例如。变量 obj1 ,变量 obj2。这些变量的值是从 firebase 访问的。
  • 然后,我写了 $scope.total_count = obj1.$value + obj2.$value + obj3.$value + obj4.$value + obj5.$value;在添加函数中。
  • 这个$value不能用,也没有定义。
猜你喜欢
  • 2015-09-18
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2021-11-12
  • 2013-12-22
  • 2019-06-28
相关资源
最近更新 更多