gpt4 book ai didi

javascript - polymer - 在元素中加载核心 ajax

转载 作者:太空狗 更新时间:2023-10-29 13:56:19 26 4
gpt4 key购买 nike

检查后core-ajax usage在 polymer 网站中,我决定在我的元素/小部件中使用 core-ajax 添加 ajax 功能。

test-view.html

<link rel="import" href="bower_components/polymer/polymer.html">
<link rel="import" href="bower_components/core-ajax/core-ajax.html">

<polymer-element name="test-view" attributes="url">
<core-ajax id="elemAjax" url="{{url}}" handleAs="json"></core-ajax>
<template>
<div id="body"></div>
</template>
<script>
Polymer('test-view', {
ready: function() {
var ajax = this.$.elemAjax; // this line
ajax.addEventListener('core-response', function() {
console.log(this.response);
});
}
});
</script>
</polymer-element>

不幸的是,我的脚本中的“ajax”变量返回“undefined”。如何使用 core-ajax 在元素中加载 ajax?

附带问题: polymer 元素内的“id”属性是否只能在 polymer 元素内访问?

最佳答案

三个主要问题:

  1. core-ajax 必须放在模板内部,因此它是每个实例 DOM 的一部分(这就是 ajax 未定义的原因)。
  2. 您需要 core-ajax 上的 auto 属性(否则,您必须调用 上的 go() 方法core-ajax 发送请求)。
  3. 您的事件处理程序使用 this 但未绑定(bind)到元素范围。建议您使用事件委托(delegate)代替 addEventListener

请参阅下面的新示例。我所做的其他(不太重要的)调整:

  1. core-ajax 中移除 id,我们不再需要引用它。
  2. 删除 polymer.html 导入,core-ajax 已经导入它。
  3. 移除 Polymer()test-view 参数,在导入中定义元素时不需要。

修改示例:

<link rel="import" href="bower_components/core-ajax/core-ajax.html">

<polymer-element name="test-view" attributes="url">
<template>
<core-ajax auto url="{{url}}" handleAs="json" on-core-response="{{ajaxResponse}}"></core-ajax>
<div id="body"></div>
</template>
<script>
Polymer({
ajaxResponse: function(event, response) {
console.log(response);
}
});
</script>
</polymer-element>

更好的方法是完全避免事件并将数据直接绑定(bind)到响应数据。示例:

<link rel="import" href="bower_components/core-ajax/core-ajax.html">

<polymer-element name="test-view" attributes="url">
<template>
<core-ajax auto url="{{url}}" handleAs="json" response="{{response}}"></core-ajax>
<div id="body"></div>
</template>
<script>
Polymer({
responseChanged: function(oldValue) {
console.log(this.response);
}
});
</script>
</polymer-element>

关于javascript - polymer - 在元素中加载核心 ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24359417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com