【发布时间】:2018-01-12 14:21:57
【问题描述】:
我是 typescript 的新手,在同一个类中调用函数时遇到问题: 我有这样的功能:
createPost(url: String, data: any) {
$.ajax({
url: url + "/" + GLOBAL.REGISTER_URL,
type: "POST",
data: data.serialize(),
success: function() {
console.log("success");
},
error: function(request, status, error) {
console.log(request.responseText);
console.log(status);
console.log(error);
}
});
}
我想在这里称呼它:
.on('success.form.bv', function(e) {
$('#success_message').slideDown("slow"); // Do something ...
$('#contact_form').data('bootstrapValidator').resetForm();
// Prevent form submission
e.preventDefault();
// Get the form instance
var $form = $(e.target);
// Get the BootstrapValidator instance
var bv = $form.data('bootstrapValidator');
// XXX reassigning port for testing purposes only
var result = "https://" + window.location.hostname + ":" + GLOBAL.PORT + "/" + GLOBAL.VERSION + "/rest" + GLOBAL.REGISTER_URL;
this.createPost(result, $form);
});
但这不起作用,每次单击按钮时,浏览器都会出错:
错误类型错误:this.createPost 不是函数堆栈跟踪: ../../../../../src/app/register/register.component.ts/RegisterComponent.prototype.ngOnInit/http://localhost:4200/main.bundle.js:839:13 调度@http://localhost:4200/assets/js-lib/jquery-3.1.1.min.js:3:10263 添加/q.handle@http://localhost:4200/assets/js-lib/jquery-3.1.1.min.js:3:8325 触发@http://localhost:4200/assets/js-lib/jquery-3.1.1.min.js:4:5806 触发/http://localhost:4200/assets/js-lib/jquery-3.1.1.min.js:4:6310 每个@http://localhost:4200/assets/js-lib/jquery-3.1.1.min.js:2:2813 每个@http://localhost:4200/assets/js-lib/jquery-3.1.1.min.js:2:1001 触发@http://localhost:4200/assets/js-lib/jquery-3.1.1.min.js:4:6289 _提交@http://localhost:4200/assets/js-lib/bootstrapValidator.js:549:13 验证@http://localhost:4200/assets/js-lib/bootstrapValidator.js:857:13 _init/http://localhost:4200/assets/js-lib/bootstrapValidator.js:109:21 调度@http://localhost:4200/assets/js-lib/jquery-3.1.1.min.js:3:10263 添加/q.handle@http://localhost:4200/assets/js-lib/jquery-3.1.1.min.js:3:8325 ../../../../zone.js/dist/zone.js/http://localhost:4200/polyfills.bundle.js:2839:17 onInvokeTask@http://localhost:4200/vendor.bundle.js:49785:24 ../../../../zone.js/dist/zone.js/http://localhost:4200/polyfills.bundle.js:2838:17 ../../../../zone.js/dist/zone.js/http://localhost:4200/polyfills.bundle.js:2606:28 ../../../../zone.js/dist/zone.js/http://localhost:4200/polyfills.bundle.js:2913:24 调用任务@http://localhost:4200/polyfills.bundle.js:3785:9 globalZoneAwareCallback@http://localhost:4200/polyfills.bundle.js:3803:17
这应该是一个简单的函数调用,不知道是怎么回事,谁能帮我解决这个问题?
【问题讨论】:
-
那是... jQuery 吗?
-
您所称的 "here" 到底在哪里?你能展示你的全班吗?
-
你指的类在哪里?
-
function() 正在改变 this 的范围。尝试使用箭头函数 (e)=>{this.createPost(result, $form)}
标签: angular typescript