【问题标题】:Properties of object returned by service not available服务返回的对象的属性不可用
【发布时间】:2014-07-28 01:55:58
【问题描述】:

我有一个用户可以在其中注册帐户的网页。我做了一个简单的指令来检查用户名是否已经被使用,如果是,它应该使表单字段无效。

我的指令调用一个 PHP 网络服务,它检查数据库并返回一个带有该用户名状态的 JSON 对象。

我的指令看起来像这样:

link: function(scope, elm, attrs, c) {
    elm.bind('blur', function() {
        var result = accountService.uniqueUser(elm.val());
        console.log(result);
        console.log('A: '+result.usernameIsTaken);
    }
});

如你所见,我做了两个console.logs。第一个返回这个:

Resource {$promise: Object, $resolved: false, $get: function, $save: function, $query: function…}
$promise: Object
$resolved: true
usernameIsTaken: false
__proto__: Resource

所以你可以看到它“应该”包含属性userNameIsTaken。但是当第二个console.log 被触发时,它会返回:

A: undefined

为什么我不能这样访问该属性?当第一个 console.log 清楚地表明它应该在那里时,为什么它给我 undefined

这里有什么我遗漏的吗?

【问题讨论】:

    标签: javascript angularjs angularjs-resource


    【解决方案1】:

    您的问题是您正在向服务器发出异步请求,但希望其结果立即可用。

    相反,您可以将成功回调传递给Resource 上的$promise 对象,以便在数据可用时对其进行处理:

    result.$promise.then(function(data) {
       console.log(data.usernameIsTaken);
    });
    

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 2022-01-23
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      相关资源
      最近更新 更多