为什么 "namespace" JavaScript 文件中的函数不会填充下拉列表?
Why won't a function within a "namespace" JavaScript file populate a dropdownlist?
我有 2 个外部 JavaScript 文件,一个设置为 "namespace",另一个文件调用它。
这是我的 "namespace" 的样子
var GlobalScript = {
GetAllStates: function () {
$.ajax({
type: "GET",
url: URLParam.GetStatesForDropdown,
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
ShowStates(data);
}
})
},
ShowStates: function (stateData) {
$("#acVendorState").kendoDropDownList({
dataSource: stateData,
dataTextField: "StateName",
dataValueField: "StateID",
animation: false,
optionLabel: {
StateName: "-- Select State --"
}
});
}
}
这是调用 GetAllStates() 函数的脚本,
$(document).ready(function () {
GlobalScript.GetAllStates();
});
现在这不起作用,但是,如果 "namespace" 文件看起来像这样...
function ShowStates(stateData){
$("#acVendorState").kendoDropDownList({
dataSource: stateData,
dataTextField: "StateName",
dataValueField: "StateID",
animation: false,
optionLabel: {
StateName: "-- Select State --"
}
});
}
var GlobalScript = {
GetAllStates: function () {
$.ajax({
type: "GET",
url: URLParam.GetStatesForDropdown,
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
ShowStates(data);
}
})
}
}
然后将填充我的具有下拉列表的视图。
我的问题是如何让它按照我的第一种方式工作,因为如果我用第二种方式做,那么按照我的方式做就毫无意义(至少据我所知)正在做。
ShowStates
不是变量。它是分配给 GlobalScript
对象的 属性。
ShowStates(data);
应该是 GlobalScript.ShowStates(data);
在您的 js 中尝试此代码
var GlobalScript = {
GetAllStates: function () {
var self = this; // <= self object created
$.ajax({
type: "GET",
url: URLParam.GetStatesForDropdown,
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
self.ShowStates(data);
}
})
},
ShowStates: function (stateData) {
$("#acVendorState").kendoDropDownList({
dataSource: stateData,
dataTextField: "StateName",
dataValueField: "StateID",
animation: false,
optionLabel: {
StateName: "-- Select State --"
}
});
}
}
我有 2 个外部 JavaScript 文件,一个设置为 "namespace",另一个文件调用它。
这是我的 "namespace" 的样子
var GlobalScript = {
GetAllStates: function () {
$.ajax({
type: "GET",
url: URLParam.GetStatesForDropdown,
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
ShowStates(data);
}
})
},
ShowStates: function (stateData) {
$("#acVendorState").kendoDropDownList({
dataSource: stateData,
dataTextField: "StateName",
dataValueField: "StateID",
animation: false,
optionLabel: {
StateName: "-- Select State --"
}
});
}
}
这是调用 GetAllStates() 函数的脚本,
$(document).ready(function () {
GlobalScript.GetAllStates();
});
现在这不起作用,但是,如果 "namespace" 文件看起来像这样...
function ShowStates(stateData){
$("#acVendorState").kendoDropDownList({
dataSource: stateData,
dataTextField: "StateName",
dataValueField: "StateID",
animation: false,
optionLabel: {
StateName: "-- Select State --"
}
});
}
var GlobalScript = {
GetAllStates: function () {
$.ajax({
type: "GET",
url: URLParam.GetStatesForDropdown,
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
ShowStates(data);
}
})
}
}
然后将填充我的具有下拉列表的视图。
我的问题是如何让它按照我的第一种方式工作,因为如果我用第二种方式做,那么按照我的方式做就毫无意义(至少据我所知)正在做。
ShowStates
不是变量。它是分配给 GlobalScript
对象的 属性。
ShowStates(data);
应该是 GlobalScript.ShowStates(data);
在您的 js 中尝试此代码
var GlobalScript = {
GetAllStates: function () {
var self = this; // <= self object created
$.ajax({
type: "GET",
url: URLParam.GetStatesForDropdown,
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
self.ShowStates(data);
}
})
},
ShowStates: function (stateData) {
$("#acVendorState").kendoDropDownList({
dataSource: stateData,
dataTextField: "StateName",
dataValueField: "StateID",
animation: false,
optionLabel: {
StateName: "-- Select State --"
}
});
}
}