【问题标题】:_.keys not finding every Item shown in Firebug_.keys 没有找到 Firebug 中显示的每个项目
【发布时间】:2016-01-29 09:19:16
【问题描述】:

我有一个帖子,保存在控制器中的 $scope.mydata 中。我通过参数将这些数据提供给返回函数的服务。

服务:

module.factory('myservice', function () {
    return function servicefunction(mydata) {
        var test = _.keys(mydata).length;
        console.log("mydata", mydata);
        console.log("test", test);

Firefox 中的Firebugmydata 包含的 dom 中显示:

Object { $$state={...},  angularCollection=false,  $object={...},  mehr...}

并且测试返回 5。

当我输入时

module.factory('myservice', function () {
    return function servicefunction(mydata) {
        var test = _.keys(mydata.$$state).length;
        console.log("mydata", mydata.$$state);
        console.log("test", test);

Firebug 给了我Object { status=0},在 DOM 中有状态和value []。我需要访问那个value。测试返回 1 作为状态。

为什么要通过 _.keys 进行测试来查找状态而不是值?

【问题讨论】:

  • “在 DOM 中有……”是什么意思?请注意,_.keys 将为您提供您自己的对象的可枚举属性,而不是继承的属性。所以如果value来自原型,就不会被_.keys列出来。
  • 表示,当我点击“对象{状态=0}”时,有状态和价值。当我这样做时: var keysInState = _.keys(mydata.$$state);或 var mapInState = _.map(mydata.$$state);键中只有“状态”,地图有 [0]
  • 您可以尝试hasOwnProperty 方法来测试一个属性是否继承自原型,或者是否已为您的对象定义。 mydata.$$state.hasOwnProperty(value) 在您的情况下输出什么?如果是true,则有问题,因为它确实应该由_.keys 列出。如果是false,则表示value属性被继承,_.keys设计忽略它。
  • mydata.$$state.hasOwnProperty() 返回 false,在 mydata.$$state.hasOwnProperty(value) 中,它会崩溃,因为“未定义值”
  • 我的错,应该是mydata.$$state.hasOwnProperty("value")

标签: javascript angularjs firebug


【解决方案1】:

您似乎正在尝试访问从您的mydata.$$state原型 继承的属性 (value)。在这种情况下,使用_.keys 将永远不会列出value

很可能是因为它是空的,所以现在被继承了,一旦设置它就会变成一个自己的属性。

为什么不直接访问它:mydata.$$state.value?它应该适用于两种情况(继承和拥有)。

我可能缺少您的上下文的主要部分,所以如果它仍然不起作用,那么值得提供有关您的数据的更多信息。

【讨论】:

  • mydata.$$state.value 给了我一个未定义的值。好的,所以问题必须先解决。我只是想知道为什么 Firebug 向我展示了没有访问权限的值。我从 post-request 中获得了 mydata,并通过参数将其提供给服务,我现在就在里面。该值现在是否已经是 mydata 的一部分?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 2011-05-19
  • 2017-01-09
  • 2020-08-18
  • 2019-08-08
  • 1970-01-01
相关资源
最近更新 更多