从同一类中的另一个方法调用 java 脚本类内的方法
Call a method inside a java-script class from another method inside the same class
我正在尝试创建自己的类,因此维护可能会容易得多,但我有问题,这是我的代码:
var SonalScript = function() {
console.log('instance created');
this.AjaxCall = function(url,data){
$.post(url,data,function(data,status){
alert("Data: " + data + "'nStatus: " + status);
});
}
this.Switches = function(ElemIdentifier) {
$(ElemIdentifier).bootstrapSwitch();
$(ElemIdentifier).on('switchChange.bootstrapSwitch', function(event, state) {
// console.log( $(this).get('name'));
var ModuleName = $(this).attr("name");
var name = $(this).data("name") ;
var BtnValue = $(this).data("value") ;
var url = $(this).data("addr") ;
var BtnResult = '';
if (state) {
// data-addr
// data-name
// data-value
// result = True Or False
BtnResult = 'True';
// alert('Enabling : ' + ModuleName );
} else {
BtnResult = 'False';
// alert('Disabling : ' + ModuleName);
}
// alert(result);
var data = { name:BtnValue , result : BtnResult };
console.log(data);
console.log(url);
this.AjaxCall(url,data); // << Problem is exactly this line
});
}
};
SonalUtil = new SonalScript();
当我尝试呼叫时: 这。AjaxCall(url,data);然后我在控制台中收到此错误:
Uncaught TypeError: undefined is not a function
你觉得怎么样?是什么导致了错误?
有两种
方法可以做到这一点,一种是将this
绑定到回调,另一种是将this
放入回调功能的闭包上下文中。所以第一种方法是:
...
this.Switches = function(ElemIdentifier) {
$(ElemIdentifier).bootstrapSwitch();
$(ElemIdentifier).on('switchChange.bootstrapSwitch', function(event, state) {
...
}.bind(this));
}
...
第二个将是
....
var self = this;
$(ElemIdentifier).on('switchChange.bootstrapSwitch', function(event, state) {
// console.log( $(self).get('name'));
var ModuleName = $(self).attr("name");
var name = $(self).data("name") ;
var BtnValue = $(self).data("value") ;
var url = $(self).data("addr") ;
var BtnResult = '';
if (state) {
// data-addr
// data-name
// data-value
// result = True Or False
BtnResult = 'True';
// alert('Enabling : ' + ModuleName );
} else {
BtnResult = 'False';
// alert('Disabling : ' + ModuleName);
}
// alert(result);
var data = { name:BtnValue , result : BtnResult };
console.log(data);
console.log(url);
self.AjaxCall(url,data); // << Problem is exactly this line
});
...
相关文章:
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何将一个方法延迟到另一个方法首先完成,javascript
- Angular2将组件方法导入到另一个组件中
- AngularJS从对象中获取另一个值的方法
- NodeJS-从同一文件中的另一个方法调用一个方法
- 通过引用Javascript中的另一个函数来传递对象方法
- 在另一个项目中使用大理石测试rxjs5方法
- 在React中将方法从一个组件移动到另一个组件,并且仍然可以在原始组件中使用
- 从HTML中的另一个文件访问javascript方法
- 方法不在另一个方法内部调用
- 在 1 个方法中增加变量值会触发另一个方法的 for 循环,欢迎任何建议
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- 如何在javascript中将变量的值分配给另一个方法
- 从angular js中的另一个ng应用程序调用方法
- 如何在Ember中转换到另一个路由时调用一个方法
- 如何将异步方法返回的值发送到javascript中的另一个异步方法
- 在执行另一个异步函数之前,只有当条件为true时,才执行某些异步函数的最佳方法
- 如何使用在另一个文件中定义的JavaScript方法/对象
- 我可以'没有找到使用Javascript和HTML将数组的值发送到另一个页面的方法
- 方法以打开Javascript中的另一个jsp页面