Javascript 保存淘汰js下拉值
您好,我想将下拉列表的选定值保存到服务器,但每次它都返回相同的值,而不是我选择的更新值 My kO:Javascript 保存淘汰js下拉值,javascript,knockout.js,Javascript,Knockout.js,您好,我想将下拉列表的选定值保存到服务器,但每次它都返回相同的值,而不是我选择的更新值 My kO: var stateModel = { CountriesList: ko.observableArray([]), StateId: ko.observable(), StateName: ko.observable('').extend({ required: true }), ShortName: k
var stateModel = {
CountriesList: ko.observableArray([]),
StateId: ko.observable(),
StateName: ko.observable('').extend({ required: true }),
ShortName: ko.observable('').extend({ required: true }),
IsActive: ko.observable(true),
CountryId: ko.observable()
var stateViewModel = function () {
var self = this;
self.StateModel = stateModel;
self.CountriesList = ko.observableArray([]);
self.StatesList = ko.observableArray([]);
self.CountryId = ko.observable();
我通过单击按钮调用此添加状态,但每次它都在args中返回,如:{“argBO”:{“CountriesList”:[],“StateName”:“asdf”,“ShortName”:“s”,“IsActive”:true}
self.AddState = function () {
var args = JSON.stringify({ argBO: jQuery.parseJSON(ko.toJSON(self.StateModel)) });
alert(args);
ajax.Post("AddState.aspx/AddState", args, false).success(function (data) {
};
var vm = new stateViewModel();
ajax.Get("AddCountry.aspx/getCountries", { IsActive: true }, false).success(function (data) {
vm.CountriesList(data.d);
});
ko.applyBindings(vm, document.getElementById("divcountry"));
ko.applyBindings(stateViewModel, document.getElementById("state_container"));
var vm1 = new stateViewModel();
ajax.Get("AddState.aspx/getStates", { IsActive: true }, false).success(function (data) {
vm1.StatesList(data.d);
});
下拉列表在divcountry中,StateName、ShortName在state_containerdiv中。实际上,我在下拉列表旁边的divcountry中有一个虚拟标签,它根据下拉列表的选择为我提供了正确的选择值
<div id="divcountry">
<select data-bind="options: CountriesList,optionsText: 'CountryName',optionsValue:'CountryId',value:CountryId,optionsCaption: 'Select Country..'" style="width: 148px">
</select>
<label data-bind="text: CountryId"></label>
</div>
我错在哪里??我已经在网上搜索了2天了!!我会很感激的 我再次敦促大家花适当的时间阅读knockoutjs文档,了解绑定上下文以及其他内容。因为即使你声明你理解绑定上下文,你在过去的日子里提出的所有问题都表明你不理解绑定上下文。然后问自己为什么首先发布vm.StateModel
vm.CountryId
不等于vm.StateModel.CountryId
我认为如果您将StateModel修改为适合您的类
var stateModel = function(){
CountriesList: [],
StateId: '',
StateName: '',
ShortName: '',
IsActive: true,
CountryId: 0
}
var stateViewModel = function () {
var self = this;
self.StateModel = new ko.observable(new stateModel());
self.CountriesList = ko.observableArray([]);
self.StatesList = ko.observableArray([]);
self.CountryId = ko.observable();
}
然后将self.StateModel更改为self.StateModel()您可能需要在data.d中循环,并执行vm.CountriesList.push以获取可观察数组中的值。我的可观察数组是否在此未获取值??如果是,那么显示可观察的CountryId的虚拟标签是否?请尝试我的方法,如下图所示?(var i=0;i