javascript - 如何根据用户选择更新我的税费

标签 javascript jquery knockout.js

我试图弄清楚当用户选择特定州时如何更新我的税率。这是我的代码(删除了不相关的数据):

<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应该说“这应该出现“ 但事实并非如此,它只是完全绕过更新 taxedItems。有谁知道这是为什么吗?

最佳答案

如果您想在 mainViewModel 中添加taxedItems,您可以这样做:
虚拟机:

 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/

关于javascript - 如何根据用户选择更新我的税费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36226980/

相关文章:

javascript - 如何让 div 在 onclick nr 2 之后消失?

javascript - 我如何为无法设置动画的内容进行缓慢过渡?

jquery - 通过ajax提交时如何获取nicEdit表单的内容?

list - Foreach 不同的值 knockout 列表

javascript - 尽管选择了范围,selection.toString() 仍返回空字符串

javascript - 从文档正文中插入元标记?

javascript - 如何将 JSON 转换为对象并传递给选项等函数

javascript - 如何在 IBM Worklight 中重定向到同一页面但不同的 div/ View ?

javascript - knockout : show content only if something its written in a textbox and hide it if the data is deleted

javascript - 无法使用带有解析存在 View 模型的 ko.mapping.fromJSON 解析绑定(bind) js 错误