当儿童可观察到的更新时,淘汰赛js css似乎没有重新计算

事物

我对Knockout相当陌生,我想尽一切办法观察可观察物和计算可观察物。

更新:JS Fiddle:http : //jsfiddle.net/tQ576/4/带有运行但损坏的示例。当在输入框中输入内容时,Label的标签应变为绿色。

我有一个像这样的模型:

var json = {
    name: 'Testing',
    items: [{
        question: 'Question 1',
        answer: '',
        isrequired: true,
        isvisible: true,
        complexObject: {
            FirstName: '',
            LastName: '',
            Email: ''
        }
    }, {
        question: 'Question 2',
        answer: '',
        isrequired: true,
        isvisible: true,
        complexObject: {
            FirstName: '',
            LastName: '',
            Email: ''
        }
    }]
};

var ViewModel = function () {
    var self = this;
    self.profile = ko.observable(new Profile(json));
};

var Profile = function (init) {
    var self = this;
    self.name = ko.observable(init.name);
    self.items = ko.observableArray([]);
    for (var i = 0; i < init.items.length; i++) {
        self.items.push(new ProfileItem(init.items[i]));
    }
};

var ComplexObject = function () {
    var self = this;
    self.name = ko.observable("");
    self.email = ko.observable("");
}

var ProfileItem = function (item) {
    var self = this;
    self.question = ko.observable(item.question);
    self.answer = ko.observable(item.answer);
    self.complexObject = ko.observable(new ComplexObject());
    self.isvisible = ko.observable(item.isvisible);
    self.isrequired = item.isrequired;
    self.cssclasses = ko.computed(function () {
        if (self.complexObject().Email != undefined && self.complexObject().Email().length > 0) {
            return "satisfied";
        } else {
            return "required";
        }
    });
};

ko.applyBindings(new ViewModel());

然后在我的html中,我有这样的模板:

<div data-bind="foreach: profile().items">
    <div data-bind="css: cssclasses">
        <span data-bind="text: question"></span><br />
        <div data-bind="with: complexObject">
            <input data-bind="value: email" />
        </div>
    </div>
</div>
<div data-bind="text: ko.toJSON($root)"></div>

似乎当为“电子邮件”更新值时,cssclasses的计算值将永远不会重新计算。有办法强制重新计算吗?

最好的问候,并感谢大家的帮助。

JS小提琴:http//jsfiddle.net/tQ576/4/

事物

第45章

如果您email在计算中没有大写字母,它将起作用。小提琴

更改self.complexObject().Email !== undefined && self.complexObject().Email().length > 0)self.complexObject().email !== undefined && self.complexObject().email().length > 0)-因为这就是您在视图模型和数据绑定中拥有它的方式。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

淘汰赛:找出计算出的可观察触发

淘汰赛:可以在没有参数的情况下调用可观察的扩展程序吗?

无法在淘汰赛js中观察到数据

计算出的强制淘汰赛在更换可观察到的内部后重新评估

用JavaScript编写类似C#的扩展以实现可观察到的淘汰赛

淘汰赛绑定包装器,输入更改不会触发可观察到的订阅

淘汰赛可观察到多个订阅

如何在html上显示此可观察到的淘汰赛?

淘汰赛-添加了可观察到的未在新对象上更新的功能

如何使“独立”计算的可观察到的某些可观察到的(Knockout.js)

淘汰赛可观察到的最新价值

重新评估仅取决于可观察数组的淘汰赛

带有字符的淘汰赛追加可观察对象

淘汰赛js计算未被解雇

浏览器之间可观察到的淘汰赛共享-仅在本地更改值时订阅

可观察到淘汰赛-为什么此值会自动更新?

可观察到淘汰赛更新

为什么可观察到的不通知是否阻止了淘汰赛?

淘汰赛订阅/事件类型系统没有可观察的?

剔除js阻止可观察到的现有html更新

是否让淘汰赛计算对象订阅不在初始执行路径中的可观察对象?

淘汰赛如何设置可观察儿童的价值

从可观察到的淘汰赛中删除最后一个角色

选择的下拉值更改时,可观察到的淘汰赛未更新

淘汰赛:Ajax调用后无法映射计算的可观察物

将recaptcha响应放入可观察到的js淘汰赛中

淘汰赛js observableArray没有得到更新

淘汰赛 js CSS 绑定

在淘汰赛 js 中保持属性不可观察 vs 可观察有什么好处吗?