Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 隔离未从地理位置更新的范围角度绑定_Javascript_Angularjs_Navigator_Isolate Scope - Fatal编程技术网

Javascript 隔离未从地理位置更新的范围角度绑定

Javascript 隔离未从地理位置更新的范围角度绑定,javascript,angularjs,navigator,isolate-scope,Javascript,Angularjs,Navigator,Isolate Scope,我在指令中使用了isoated范围。一切似乎都很好。我在两个属性上设置了一个=范围,并在模板中绑定到它们。然后,在我的控制器中,我调用我的服务,获取数据并将其推送到绑定对象上 真正让我头疼的是,我可以记录和设置断点,并且可以查看数据,但angular不会更新绑定(尽管它可以很好地更新bool字段) 我提供了一个plunkr: 相关代码部分为: if (navigator.geolocation) { //navigator.geolocation.getCurrentPositio

我在指令中使用了isoated范围。一切似乎都很好。我在两个属性上设置了一个
=
范围,并在模板中绑定到它们。然后,在我的控制器中,我调用我的服务,获取数据并将其推送到绑定对象上

真正让我头疼的是,我可以记录和设置断点,并且可以查看数据,但angular不会更新绑定(尽管它可以很好地更新bool字段)

我提供了一个plunkr:

相关代码部分为:

  if (navigator.geolocation) {
    //navigator.geolocation.getCurrentPosition(success, fail);
    $timeout(function() { success({testdata: "bogusdata"}) }, 1500);
  } else {
    fail({ error: "navigator.geolocation not available"});
  }
显然,如果我使用$timeout mock,它就可以正常工作。但是如果我替换getCurrentPosition函数,则不会有任何更新(但它会记录)


帮助?

实际上,您只是在处理数据的方式上遇到了问题-地理位置对象到达并正确地放在
$scope
上,只是
JSON.stringify
将其序列化(似乎不正确)为
{}

您可以通过记录
$scope.locationData.payload
-您将看到整个对象出现在控制台上,并且记录
type of$scope.locationData.payload.coords
显示
对象
,这意味着它在日志调用时已正确填充。(记录对象本身并不能证明这一点,因为console.log只记录对象引用,在手动展开对象引用时异步访问对象引用)

这似乎是不正确的,因为
JSON.stringify
只应记录对象的自身属性,而
coords
timestamp
不是此地理位置对象的自身属性。(尝试
$scope.locationData.payload.hasOwnProperty('coords')
:它返回
false

解决方法将取决于您的具体需求。也许你甚至不需要解决办法,因为你可以访问这些数据,只是不能按照你想要的方式记录或串接它

额外资源:

  • 下面是我发现的一篇博客文章,它遇到了同样的问题:

  • 下面是一篇stackoverflow帖子,解释了为什么这些属性不是地理位置的自有属性:


优秀的代码。我正在尝试查找任何问题或错误以帮助您。感谢您的响应,我需要一些时间来消化它。请尝试从位置数据对象获取单个属性:$scope.locationData={message:error.message…}