我无法从特定上下文访问特定对象。
我有一段使用jquery
,moment和daterangepicker
的Javascript。
我正在使用jquery
设置要在apply.daterangepicker
事件触发时运行的函数,并且需要从该函数中的另一个对象中调用一个方法。
我的代码如下:
$('input[name="daterangetext"]').on('apply.daterangepicker', function(e,picker) {
pickerStartString = moment(picker.startDate).format('YYYY-MM-DD HH:mm');
pickerEndString = moment(picker.endDate).format('YYYY-MM-DD HH:mm');
start = pickerStartString;
end = pickerEndString;
changeRange();
});
调用changeRange
就是问题所在。我有一个定义如下的对象:
var APG_g = new APGraph('test APGraph Object');
changeRange方法定义为:
this.changeRange = function()
{
function body here
}
如何从上述函数中调用changeRange
?
我曾尝试将其称为APG_g.changeRange()
,但这种方法不起作用-当我收到未定义的运行时错误时,变量changeRange
在内部使用的情况似乎未设置,随后对changeRange
的调用由于相同的原因而失败。
谁能解释我应该怎么做?
答案 0 :(得分:0)
希望这个小演示可以为您解决问题。您似乎没有使用ES6语法,因此我添加的JavaScript使用了较旧的语法。这个想法是向您展示如何从特定的上下文中调用方法,就像您问的那样。
var button = $('button');
function Test() {
this.testMethod = function() {
button.html('New button text');
}
}
var myTest = new Test();
button.on('click', function handleClick() {
myTest.testMethod();
});
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#banner-message {
background: #fff;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
}
button {
background: #0084ff;
border: none;
border-radius: 5px;
padding: 8px 14px;
font-size: 15px;
color: #fff;
cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div id="banner-message">
<button>Click to change text</button>
</div>
答案 1 :(得分:0)
感谢您的意见。原来我只是弄乱了代码。我现在可以正常工作了。正如安迪·霍夫曼(Andy Hoffman)所暗示的那样,正确的解决方案只是将方法称为APG_g.changeRange();