var viewModel = function (utils) {
this.x="GNC";
this.tbl = null; }; viewModel.prototype.saveCords=function(){ alerts(this.x); };
$(function(){
var objViewModel=new viewModel();
$('#btnSaveCords').on('click',objViewModel.saveCords); // this is suppose to alert "GNC", but it doesnt
});
那么,我如何在saveCords而不是按钮上下文中获取对象上下文?
答案 0 :(得分:1)
问题是默认情况下,事件处理程序方法将上下文作为处理程序所针对的dom元素,您需要将其更改为自定义对象。
使用$.proxy()将自定义执行上下文传递给事件处理程序方法。(您可以使用Function.bind()但IE中没有支持< 9)
var viewModel = function (utils) {
this.x = "GNC";
this.tbl = null;
};
viewModel.prototype.saveCords = function () {
alert(this.x);
};
$(function () {
var objViewModel = new viewModel();
$('#btnSaveCords').on('click', $.proxy(objViewModel.saveCords, objViewModel)); // this is suppose to alert "GNC", but it doesnt
});
演示:Fiddle
答案 1 :(得分:0)
您应该放置参数
var objViewModel=new viewModel(utils_param_here); //here defined in function utils
完整代码:
var viewModel = function (utils) {
this.x="GNC";
this.tbl = null; }; viewModel.prototype.saveCords=function(){ alerts(this.x); };
$(function(){
var objViewModel=new viewModel(this);
$('#btnSaveCords').on('click',objViewModel.saveCords); // this is suppose to alert "GNC", but it doesnt
});