当前位置: 首页 > 面试题库 >

Firebase angularfire child。$ asObject赋予属性未定义

秦宁
2023-03-14
问题内容

我有以下代码:

factory

app.factory('Items', function($firebase,FIREBASE_URL) {
    var ref = new Firebase(FIREBASE_URL);
    var items = $firebase(ref.child('items')).$asArray();
    var Item = {
        all: function () {
          return items;
        },
        create: function (item) {
          return items.$add(item);
        },
        get: function (itemId) {
          return $firebase(ref.child('items').child(itemId)).$asObject();
        },
        update: function (itemId, item) {
          return $firebase(ref.child('items').child(itemId)).update(item);
        },
        delete: function (item) {
          return items.$remove(item);
        }
    };
    return Item;
});

route

app.config(function($stateProvider) {
    $stateProvider      
        .state('items_update', {
            url: '/items/update/:id',
            templateUrl: 'views/items/form.html',
            controller:'ItemsUpdateController',
            resolve:{
                item:function(Items,$stateParams){
                    return Items.get($stateParams.id);
                }
            }
        })
});

controller

app.controller('ItemsUpdateController', function ($scope, item, $state) {
    $scope.item = item;
    console.log($scope.item.url);
    $scope.add = function() {
        Items.update($scope.item).then(function () {
            $state.transitionTo('items');
        });
    }
});

为什么console.log($ scope.item.url); 给我不确定的?

但在视图中我拥有所有数据

html

<form class="form-horizontal" role="form" name="form" data-ng-submit="add()">
    <div class="form-group">
        <input type="text" name="title" tabindex="1" class="form-control" placeholder="{{ 'items.form.title' | translate }}" data-ng-model="item.title" required="required" data-ng-minlength="3" data-ng-maxlength="25" user-feedback />
    </div>
    <div class="form-group">
        <input type="text" name="ingredients" tabindex="2" class="form-control" placeholder="{{ 'items.form.ingredients' | translate }}" data-ng-model="item.ingredients" required="required" ng-pattern="/^\w(\s*,?\s*\w)*$/" user-feedback />
    </div>
    <div class="form-group">
        <input type="text" name="price" tabindex="3" class="form-control" placeholder="{{ 'items.form.price' | translate }}" data-ng-model="item.price" required="required" data-smart-float user-feedback />  
    </div>
    <div class="form-group">
        <button type="button" tabindex="4" class="btn btn-default btn-lg" item="item" data-uploader>{{ 'items.form.upload' | translate }}</button>
        <input type="text" name="url" style="display:none;" required="required" data-ng-model="item.url" />
    </div>
    <div class="form-group form-no-required clearfix">
        <div class="pull-right">
            <button type="submit" tabindex="5" class="btn btn-primary" data-ng-disabled="form.$invalid">{{ 'items.form.submit' | translate }}</button>
        </div>
    </div>
</form>

ENDS UP

就像@Frank van Puffelen的评论一样,我的解决方法是:

app.controller('ItemsUpdateController', function($scope, item, $state) {
    item.$loaded().then(function(data) {
        $scope.item = data;  
        console.log($scope.item.url);
    });
    $scope.add = function() {
        Items.update($scope.item).then(function() {
            $state.transitionTo('items');
        });
    }
});

问题答案:

这是因为在您console.log($scope.item.url);运行时,尚未从Firebase加载数据。Angular侦听Firebase /
AngularFire发出的通知,以了解何时加载数据,然后更新视图。

另请参阅angularfire-为什么我不能遍历$
asArray返回的数组
和尝试从Firebase获取子记录。



 类似资料:
  • 我必须根据tenantIdentifier创建一个数据源bean以实现多租户。我正在考虑开箱即用的解决方案,添加新租户就像在context.xml中添加配置和在应用程序属性文件中添加租户属性一样简单,公开一个API来刷新我的context.xml以便从spring cloud config和属性文件中加载。 目前,我被这个错误所困扰: 我的DataSourceFactoryBean如下所示: 我有

  • 问题内容: 我正在借助以下方法设置新的React:https : //github.com/facebookincubator/create-react- app 但是,我遇到了一个棉绒问题。我收到以下掉毛错误。 这是导致问题的代码: 我试着使用react / prop-types规则,但无济于事。 问题答案: 根据这个问题发表评论。 这似乎是因为您在安装时仅应使用create-react- ap

  • 功能说明 身份赋予API可以在客户在直播时,指定观众以特定身份观看直播,如将自身平台的观众身份传递到直播页面,让观众获得无缝的体验。 特别说明:如果您选用了此API,那么微信打赏,付费观看等涉及微信的功能将暂不可用 身份赋予逻辑图 接口说明 请求header GET http://{your-domain}/activity.php?a=userAssign 注:请将 {your-domain}

  • 试图向OpenLDAP添加一个新属性,但总是碰壁。我正在尝试向架构添加ipPhone属性,因为我不能在默认的telephoneNumber属性中包含*数字。 下面是我的LDIF文件,用于创建新属性并将其与objectClass类似。 我已经测试和谷歌了几个小时,但一直无法解决这个问题或找出我错过了什么!

  • 创建Spring Boot cloud config应用程序时出现以下错误。有什么帮助吗?

  • 第三方身份赋予功能模块 自定义授权,用户将频道改为自定义授权模式,并设定好自定义地址,访客进入观看页后会先跳转到自定义网址,完成身份赋予后再跳转回来 第三方身份赋予密钥,用户在“媒体中心 ——> 基础配置”栏生成密钥后,用以给传输的数据加密 身份赋予接口,用户调用接口传输密文,完成身份赋予 用户得到带有识别码的Cookie,并跳转到指定网址 第三方身份赋予接口 GET /hubuser/api/a