从ajax更改视图模型时,计算出的剔除未更新

马斯纳德·尼希特(Masnad Nihit)

我对淘汰赛Js的了解是,无论如何,计算都将根据视图模型进行更新,但是在我看来,这是没有发生的。因此,基本上,我有一个单选按钮,该按钮可以打开和关闭并更改数据库中的日期,而ajax调用将返回并在视图模型中推送新日期,以便更改数据。

多数民众赞成在总结。但是我想要的是,在更新单选按钮时,我希望基于单选按钮将html的一部分更改为活动或禁用。

首先,这里是HTML代码。

<div class="col-sm-4">
  <p>
    <span data-bind="text : $data.basketStatusValue"></span>
  </p>
</div>
<div class="col-sm-4">
  <div class="on_off">
    <input type="checkbox"  data-bind="bootstrapSwitchOn: {
        tocall: $root.changeActiveBasketStatus
    }" />
  </div>
</div>

这是JS代码。

function MoneyInvestedViewModel(root /* root not needed */, money) {
    var self = this;
    self.ID = money.ID;
    self.ORIG_ID = money.ORIG_ID;
    self.Available = money.Available;
    self.basketStatusValue = ko.computed (function () {
        if (self.Available == '9999-12-01') {
            return "Active";
        } else {
            return "Disabled";
        }
    });
};

接下来是更新视图模型moneyInvested的代码。因此,该复选框可以显示为开或关。

self.changeActiveBasketStatus = function (bindingContext) {
    console.log(bindingContext);
    var Id = bindingContext.$data.ORIG_ID;
    var Available = bindingContext.$data.Available;
    if (Available == '9999-12-01') {
        $.ajax({
            type: 'POST',
            url: BASEURL + 'index.php/moneyexchange/changeBasketStatus/' + auth + "/" + Id + "/" + 1,
            contentType: 'application/json; charset=utf-8'
        })
        .done(function (newAvailableDate) {
            bindingContext.$data.Available = newAvailableDate;
        })
        .fail(function (jqXHR, textStatus, errorThrown) {
            self.errorMessage(errorThrown);
        })
        .always(function (data){  
        });
    } else {
        $.ajax({
            type: 'POST',
            url: BASEURL + 'index.php/moneyexchange/changeBasketStatus/' + auth + "/" + Id + "/" + 0,
            contentType: 'application/json; charset=utf-8'
        })
        .done(function (newAvailableDate) {
            bindingContext.$data.Available = newAvailableDate;
        })
        .fail(function (jqXHR, textStatus, errorThrown) {
            self.errorMessage(errorThrown);
        })
        .always(function (data) {
        });
    }
};

因此,基本上,问题在于,完成所有此更新后,所计算的self.basketStatusValue不会得到更新。因此,当我单击复选框时,它不显示“活动”,或单击“禁用”,则该复选框运行良好,只有html$data.basketStatusValue不能通过计算函数进行更新。

万一有必要,这里是复选框的代码。

(function ($) {
    ko.bindingHandlers.bootstrapSwitchOn = {
        init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
            var options = ko.utils.unwrapObservable(valueAccessor());
            var tocall = ko.utils.unwrapObservable(options.tocall);

            $elem = $(element);
            $(element).bootstrapSwitch();
            $(element).bootstrapSwitch('setState', bindingContext.$data.Available === '9999-12-01' ? true : false); // Set intial state
            $elem.on('switch-change', function (e, data) {
                tocall(bindingContext);
                // valueAccessor()(data.value);
            });
        },
        update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        }
    };
})(jQuery);

总而言之,$data.basketStatusValue当复选框处于打开或关闭状态时,我要做的就是将其“活动”或“禁用”。

XAF

可以用来实现此目的的肮脏技巧在整个可观察范围内都是空的,并用新数据推送它。但是说实话,这不是正确的使用方式。我现在假设多数民众赞成在其数组,但您也可以删除可观察对象。只需放置可观察的名称而不是YourArray()。

self.refresh = function(){
        var data = YourArray().slice(0);
        YourArray.removeAll(); 
        self.YourArray(data);
        };

并将此功能放在完成功能之后

.done(function(newAvailableDate) {
   bindingContext.$data.Available = newAvailableDate;
  // here self.refresh();
 })

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改计算的依赖项时,计算出的可观察的敲除不更新值

来自分类Dev

角度,更改模型时视图未更新

来自分类Dev

角度,更改模型时视图未更新

来自分类Dev

从数组计算出的KO可更新

来自分类Dev

使用可观察数组计算出的淘汰赛未更新

来自分类Dev

计算出的剔除会创建可写但未读的可观察对象的依赖关系

来自分类Dev

SSAS MDX:计算出的成员未显示在Excel中

来自分类Dev

使用计算出的Knockoutjs和bindingHandlers还原更改

来自分类Dev

Knockout JS:计算出的 observable 无法更新

来自分类Dev

更改模型后,AngularJS视图未更新

来自分类Dev

更改模型后AngularJS视图未更新

来自分类Dev

当函数更新计算中使用的可观察数组时,剔除计算数组未更新

来自分类Dev

计算出现次数

来自分类Dev

在socket.io事件回调中更改模型时,角度视图未更新

来自分类Dev

在视图模型内单击时更新输入框的文本-剔除

来自分类Dev

SwiftUI视图在更改@ObservedObject时未更新

来自分类Dev

ExtJs4 +:计算出的模型字段可以编辑吗?

来自分类Dev

(MySQL)使用更新查询中计算出的值更新多行

来自分类Dev

通过插入从其他列计算出的值来更新rails mass更新列

来自分类Dev

使用Marionette Backbone.js渲染视图后获取计算出的CSS属性(例如:宽度)

来自分类Dev

剔除组件未绑定视图模型(ES6)

来自分类Dev

原始更改时,视图模型中的分配值未更新

来自分类Dev

为何chrome突出显示未在样式中列出或未计算出的边距

来自分类Dev

在SQLAlchemy中打印计算出的距离

来自分类Dev

Golang Fibonacci计算出现

来自分类Dev

使用grep计算出现的总数

来自分类Dev

如何计算出勤率

来自分类Dev

在行中显示计算出的度量?

来自分类Dev

ALU计算出的Mips架构地址

Related 相关文章

  1. 1

    更改计算的依赖项时,计算出的可观察的敲除不更新值

  2. 2

    角度,更改模型时视图未更新

  3. 3

    角度,更改模型时视图未更新

  4. 4

    从数组计算出的KO可更新

  5. 5

    使用可观察数组计算出的淘汰赛未更新

  6. 6

    计算出的剔除会创建可写但未读的可观察对象的依赖关系

  7. 7

    SSAS MDX:计算出的成员未显示在Excel中

  8. 8

    使用计算出的Knockoutjs和bindingHandlers还原更改

  9. 9

    Knockout JS:计算出的 observable 无法更新

  10. 10

    更改模型后,AngularJS视图未更新

  11. 11

    更改模型后AngularJS视图未更新

  12. 12

    当函数更新计算中使用的可观察数组时,剔除计算数组未更新

  13. 13

    计算出现次数

  14. 14

    在socket.io事件回调中更改模型时,角度视图未更新

  15. 15

    在视图模型内单击时更新输入框的文本-剔除

  16. 16

    SwiftUI视图在更改@ObservedObject时未更新

  17. 17

    ExtJs4 +:计算出的模型字段可以编辑吗?

  18. 18

    (MySQL)使用更新查询中计算出的值更新多行

  19. 19

    通过插入从其他列计算出的值来更新rails mass更新列

  20. 20

    使用Marionette Backbone.js渲染视图后获取计算出的CSS属性(例如:宽度)

  21. 21

    剔除组件未绑定视图模型(ES6)

  22. 22

    原始更改时,视图模型中的分配值未更新

  23. 23

    为何chrome突出显示未在样式中列出或未计算出的边距

  24. 24

    在SQLAlchemy中打印计算出的距离

  25. 25

    Golang Fibonacci计算出现

  26. 26

    使用grep计算出现的总数

  27. 27

    如何计算出勤率

  28. 28

    在行中显示计算出的度量?

  29. 29

    ALU计算出的Mips架构地址

热门标签

归档