2015-09-04 84 views
3

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

真正摆脱我的是我可以记录和设置一个断点,并可以看到数据,但角度不会更新绑定(尽管它更新我的布尔字段就好了)。

我提供了一个plunkr: http://plnkr.co/edit/8sVwaea5Amqvf3yiI1Nm?p=preview

而且培训相关代码部分:

if (navigator.geolocation) { 
    //navigator.geolocation.getCurrentPosition(success, fail); 
    $timeout(function() { success({testdata: "bogusdata"}) }, 1500); 
    } else { 
    fail({ error: "navigator.geolocation not available"}); 
    } 

显然,如果我用我的$超时模拟,它工作得很好。但是,如果我替换getCurrentPosition函数,没有更新(但它会记录)?!?!

帮助?

+0

优秀的代码。我试图找到任何问题或错误来帮助你。 –

回答

1

其实只是在与你想处理数据的方式有问题 - Geolocation对象到达,被提上了$scope正确,它只是JSON.stringify将其序列(貌似不正确地)为{}

您可以通过登录$scope.locationData.payload验证这一点 - 你会看到整个对象出现在控制台上,并记录typeof $scope.locationData.payload.coords显示object,这意味着它在日志调用时正确填充。 (登录对象本身不会是证明了这一点,因为执行console.log只记录对象的引用,异步访问它们,当你手动展开它们)

这只是看似不正确的,因为JSON.stringify只应该登录一个对象的自身属性,而coordstimestamp不是这个Geolocation对象的属性。 (尝试$scope.locationData.payload.hasOwnProperty('coords'):它返回false

解决方法取决于您的确切需求。也许你甚至不需要一种解决方法,因为你可以访问这些数据,只是不能以你想要的方式记录或串化它。

其他资源:

+0

感谢您的回复,它会花费我一些时间来消化它。 – cocogorilla

+1

尝试从位置数据对象获取单个属性:$ scope.locationData = {message:error.message ...} –