Javascript 保存淘汰js下拉值

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

您好,我想将下拉列表的选定值保存到服务器,但每次它都返回相同的值,而不是我选择的更新值

My kO:

      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