【发布时间】: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 中的Firebug 在 mydata 包含的 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