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