我在一个节点的回调中访问dom中的方法时遇到问题,我已经附加了一个点击监听器,我无法找出原因。我尝试了以下几点。
这是负责访问回调内部方法的代码:
<dom-module id="my-view2">
<template>
...html codes ...
</template>
<script>
Polymer({
is: 'my-view2',
... properties, etc ...
//******* trying to access a method *******************
handleClick: function(e) {
var btn = document.createElement("paper-button");
btn.addEventListener("click", function() {
var el = Polymer.dom(this).querySelector('#my-view2');
el.methodToAccess();
});
}
methodToAccess: function() {
console.log('success');
},
});
我尝试了所有这些:
this.$$('#my-view2")
document.querySelector("#my-view2");
Polymer.dom(this.root).querySelector('#my-view2');
Polymer.dom(this).querySelector('#my-view2');
this.getElementById('my-view2');
它们都不起作用而且都导致无法读取属性&#39; methodToAccess&#39;为null。我做错了什么?
答案 0 :(得分:0)
如果您将回调函数绑定到当前import $ from 'jquery'
export function queryBehance(query) {
var term = query.replace(/\s/, "+");
var url = "https://www.behance.net/v2/projects?
client_id={client_id}&field=" + term;
return $.ajax({
url: url,
type: "get",
data: {projects: {}},
dataType: "jsonp",
}).done((response) => {
console.log(response);
return response["projects"]
}).fail(() => {
console.log("Ajax request fails")
})
};
范围,则可以直接访问this
。
methodToAccess
话虽如此,您可能希望使用imperative add/remove listeners:
以聚合方式进行handleClick: function(e) {
var btn = document.createElement("paper-button");
btn.addEventListener("click", function() {
this.methodToAccess();
}.bind(this));
}
HTH