Cod*_*elp 11 javascript typescript
我有这样的TS代码:
class MicrositeRequest {
micrositeName: string;
micrositeTemplate: string;
constructor() {
this.micrositeName = $("#micrositeNameId").val();
this.micrositeTemplate = $("#templateId option:selected").text();
}
public IsMicrositeRequestValid() {
if (this.checkForName() && this.checkForTemplate()) {
return true;
}
else {
return false;
}
}
checkForName() {
if (this.micrositeName != null && this.micrositeName.length != 0) {
return true;
}
else {
return false;
}
}
checkForTemplate() {
if (this.micrositeTemplate != null && this.micrositeTemplate.length != 0) {
return true;
}
else {
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是转换后的JS:
/// <reference path="scripts/typings/jquery/jquery.d.ts" />
var MicrositeRequest = (function () {
function MicrositeRequest() {
this.micrositeName = $("#micrositeNameId").val();
this.micrositeTemplate = $("#templateId option:selected").text();
}
MicrositeRequest.prototype.IsMicrositeRequestValid = function () {
if (this.checkForName() && this.checkForTemplate()) {
return true;
}
else {
return false;
}
};
MicrositeRequest.prototype.checkForName = function () {
if (this.micrositeName != null && this.micrositeName.length != 0) {
return true;
}
else {
return false;
}
};
MicrositeRequest.prototype.checkForTemplate = function () {
if (this.micrositeTemplate != null && this.micrositeTemplate.length != 0) {
return true;
}
else {
return false;
}
};
return MicrositeRequest;
})();
//# sourceMappingURL=Microsite.js.map
Run Code Online (Sandbox Code Playgroud)
单击我想调用该IsMicrositeRequestValid()方法的按钮.
这是HTML:
<div>
<input type="submit" name="submit" value="Get" onclick="IsMicrositeRequestValid()" />
</div>
Run Code Online (Sandbox Code Playgroud)
控制台说IsMicrositeRequestValid没有定义.
任何线索为什么会发生这种情况以及我如何解决它?
pet*_*ete 15
IsMicrositeRequestValid对onclick属性的调用要求该函数是全局名称空间(window)的一部分.此外,我很确定你需要MicrositeRequest在调用IsMicrositeRequestValid工作之前实例化对象(因为它依赖于它this).
function validateRequest() { // declare a function in the global namespace
var mr = new MicrositeRequest();
return mr.IsMicrositeRequestValid();
}
<input type="submit" name="sumbit" value="Get" onclick="validateRequest()" />
Run Code Online (Sandbox Code Playgroud)
是快速和肮脏的方式,它应该让它工作.
你也可以这样做:
window.validateRequest = function () { // declare a function in the global namespace
var mr = new MicrositeRequest();
return mr.IsMicrositeRequestValid();
}
Run Code Online (Sandbox Code Playgroud)
我觉得它更具可读性.
另外,看看Element.addEventListener方法.它允许更多的灵活性.
var submit = document.getElementById('my-submit');
submit.addEventListener('click', function () {
var mr = new MicrositeRequest();
return mr.IsMicrositeRequestValid();
});
<input type="submit" id="my-submit" name="sumbit" value="Get" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29578 次 |
| 最近记录: |