如何根据用户选择更新我的税款

How to update my tax based on user selection

本文关键字:我的 更新 选择 何根 用户      更新时间:2023-09-26

我正试图弄清楚当用户选择特定状态时如何更新我的税收百分比。这是我的代码(去掉无关数据):

<select data-bind="event: {change: checkTax }">
    <option value="PA">PA</option>
    <option value="FL">FL</option>
</select>
<span data-bind="text: taxedItems"></span>
var MainViewModel = function() {
    var self = this;
    var response = arrayFromJson;
    // ...
    self.checkTax = function (viewModel, event) {
        if (event.target.value === "FL") {
            userTax = "this should appear";
        }
    };
    self.taxedItems = ko.pureComputed(function() {
        taxcost = userTax;
        return taxcost;
    });
    self.CartItems($.map(response, function(item) {
        return new AppViewModel(item);
    }));
};
function AppViewModel(data) {
    var self = this;
    // ...
}
ko.applyBindings(new MainViewModel());

首先taxedItems应该为空,然后在用户将其更改为FL之后,taxedItems应该说"this should appear",但事实并非如此,它只是完全绕过了更新taxedItems。有人知道为什么会这样吗?

如果您想在mainViewModel中包含taxedItems,您可以执行以下操作:
VM:

 var MainViewModel = function () {
    var self = this;
    self.CartItems = ko.observableArray([]);
    self.States = ko.observableArray([{Value:"CA",Name:"CA"},
                                      {Value:"FL",Name:"FL"},
                                      {Value:"NY",Name:"NY"},
                                      {Value:"VG",Name:"VG"},
                                      {Value:"TX",Name:"TX"}
                                    ]);
    var response = [{ }];
    self.CartItems($.map(response, function (item) {
      return new AppViewModel(item);
    }));

    self.TaxedItems = ko.observable();
    self.SelectedState = ko.observable(0);
    self.SelectedState.subscribe(function (StateValue) {
        if(StateValue ==='FL'){
            self.TaxedItems('this should appear');
        }else{
           self.TaxedItems('');
        }
    })
  }
  function AppViewModel(data) {
    var self = this;
    // ...
}
  ko.applyBindings(new MainViewModel());

视图:

<select data-bind="foreach: States ,value:SelectedState">
<option data-bind="visible:$index()==0" value="0" disabled>Select Tax State..</option>
  <option data-bind="value: Value,text:Name"></option>
</select>
<br>
<span data-bind="text: TaxedItems"></span>

示例:http://jsfiddle.net/GSvnh/5095/