承诺使用聚合物

时间:2014-04-15 15:41:30

标签: javascript ajax polymer

我正在通过Eric扩展这个伟大的元素:https://github.com/ebidel/geo-location

我添加的一个功能是我根据返回的lat和lng值执行一个聚合物-ajax请求,仅此一行:

<polymer-ajax auto handleAs="json" response="{{data}}" url="http://service/?latlng={{latitude}},{{longitude}}></polymer-ajax>

返回一些数据。目前有两个请求发送到此服务,一个失败(因为没有传入lat&amp; lng值),第二个请求成功。

如何强制我的ajax调用等待lat和lng值存在? (以后就像行为问题这样的承诺)

1 个答案:

答案 0 :(得分:5)

延伸离开!

如果没有看到代码,我怀疑这里发生的是<polymer-ajax>获取网址,但它当然不完整。这仍然会触发元素的内部urlChanged处理程序。由于您有auto,因此请求是使用虚假值。

我按照Ben建议取消auto并使用事件地理位置火灾:

<geo-location latitude"{{latitude}}" longitude="{{longitude}}" on-geo-response="{{onLatLng}}"></geo-location>
<polymer-ajax id="ajax" handleAs="json" response="{{data}}" url="http://service/?latlng={{latitude}},{{longitude}}></polymer-ajax>

并处理事件:

onLatLng: function() {
  this.$.ajax.go();
}

BTW,请改用<core-ajax>。 core- *元素是我们支持前进的元素。

github.com/polymer/core-ajax