当前位置: 首页 > 知识库问答 >
问题:

敲除绑定不更新类样式

龚盛
2023-03-14

我试图弄清楚如何使用knockout从html中添加和删除类。

应该发生的是,当我点击卡车时,按钮应该更新为btn红色,而car按钮应该删除btn红色。

我可以看到事件绑定正在工作,因为触发了警报并返回了正确的值,但我无法更新视图。

我编写了一个非常简单的JSFIDLE。net/N8GBB/11/(出于某种原因,stackoverflow不允许我发布链接)以下是我在JSFIDLE中使用的代码

<button class="btn" data-bind="css:{'btn-red':type()=='car'}, click: set_to_car">Car</button>
<button class="btn" data-bind="css:{'btn-red':type()=='truck'}, click: set_to_truck">Truck</button>
var vehicle={ 
    type:ko.observable("car"),
           set_to_car : function(){
        this.type='car'
        alert(this.type);
    },
        set_to_truck: function(){
            this.type='truck'
     alert(vehicle.type);        
    }};

ko.applyBindings(vehicle);

共有1个答案

彭存
2023-03-14

您没有正确设置可观察的类型。

ko。observable方法返回一个函数,因此如果要更改其值,则需要将其作为一个函数调用,并将新值作为参数。

var vehicle={ 
    type:ko.observable("car"),
           set_to_car : function(){
        this.type('car');
    },
        set_to_truck: function(){
            this.type('truck');  
    }};

演示JSFiddle.

您可以在文档中阅读更多关于读取和写入观测值的内容。

 类似资料:
  • 我试图访问位于下的属性。所以基本上是一个数组,我要访问属性。 我得到以下错误。 无法处理绑定“text:function(){return process().parent[0].Id}” 无法读取未定义的属性“Id” 我尝试了以下不起作用的方法: 请帮助我如何访问ID。

  • HTML部分,我想在两个位置激活移动部分 点击切换类时调用的JS函数 布尔值在点击时更新,但类不...我是不是要重新渲染什么的?

  • 我使用Knockout。我需要建立一些功能。我从来没用过击倒。 每个视图都有一个视图模型,该模型通过从主视图模型调用。 属性在初始化开始时初始化,并在视图中使用,没有问题。例如: 这样初始化,并在无容器绑定中正确使用,如下所示: 因此,我以相同的位置/方式初始化我的新属性: 并按如下方式使用: 并得到这个错误: 击倒。js:72未捕获引用错误:无法处理绑定“foreach:function(){r

  • 我正在使用模板绑定来呈现一组单选按钮。元素上还有一个css绑定。 单击单选按钮时,viewmodel http://jsfiddle.net/d3YJc/1/

  • 问题内容: 我有调用ajax GET的函数。当ajax接收数据(json)时,它将根据给定的json创建KO模型,并返回创建的KO。 创建敲除模型并分配值后,应调用敲除。这是我的代码: 定义和一些相关功能(在“ ” 内部): 这是从另一个文件(GeneralTabl.html)调用的,它应该调用get函数并更新UI: 但是,在这种情况下,我会收到错误消息(CountryName未定义)。这是因为发

  • Mpx利用wxs完整实现了Vue中的类名样式绑定,性能优良且没有任何使用限制(很多小程序框架基于字符串解析来实现该能力,只支持在模板上写简单的字面量,大大限制了使用场景) 类名绑定 类名绑定的增强指令是wx:class,可以与普通的class属性同时存在,在视图渲染中进行合成。 对象语法 wx:class中传入对象,key值为类名,value值控制该类名是否生效。 <template> <!-