【问题标题】:Knockoutjs - Set CSS class based on value in arrayKnockoutjs - 根据数组中的值设置 CSS 类
【发布时间】:2015-12-07 02:19:29
【问题描述】:

这是我正在处理的 html 表:

  <tbody data-bind="foreach: xusers.list">
      <tr data-bind="css:{'approved-false' : member()==1 }">
        <td data-bind="text: member"></td>
        <td data-bind="text: expired"></td>
        <td data-bind="text: name"></td>
        <td data-bind="text: email"></td>
      </tr>
   </tbody>

数组项成员的值在表中显示得很好,但无论我尝试什么语法,我的 css 调用都不起作用。如果成员为真(成员包含 1 或 0),我只想应用此类。

我错过了什么?

附加代码 - 我是否覆盖 observable?...这里是唯一写入数组的地方。

if (!data) {
   ...
} 
else {
    if (data.length) {
        var curItem;
        for (var i=0; i<data.length; i++) {
            curItem = new xuser();
            curItem.name = data[i].name;
            curItem.email = data[i].email;
            curItem.city = data[i].city;
            curItem.region = data[i].region;
            curItem.country = data[i].country;
            curItem.expires = data[i].expires;
            curItem.member = data[i].member;
            curItem.expired = data[i].expired;
            xusers.list.push(curItem)
            totalRecs = data[i].TotalCount;
        }
    }
} // if (!data)/else

【问题讨论】:

  • css类名是approved-false?
  • 这不应该是这样"css: { approved-false: member() == 0 }"吗?
  • 是的...我发布了一个不正确的语法...但它无论如何都会抛出一个 member() TypeError(不是函数)...但是感谢您的回答!

标签: css knockout.js


【解决方案1】:

你很接近,只是落后了:见http://knockoutjs.com/documentation/css-binding.html

<tbody data-bind="foreach: xusers.list">
  <tr data-bind="css:{'approved-false': member() == 1 }">
    <td data-bind="text: member"></td>
    <td data-bind="text: expired"></td>
    <td data-bind="text: name"></td>
    <td data-bind="text: email"></td>
  </tr>
</tbody>

您还覆盖了您的 observables,见下文(假设 curItem 上的所有字段都是 observables,根据需要更新您自己的):

if (!data) {
   ...
} 
else {
    if (data.length) {
        var curItem;
        for (var i=0; i<data.length; i++) {
            curItem = new xuser();
            curItem.name(data[i].name);
            curItem.email(data[i].email);
            curItem.city(data[i].city);
            curItem.region(data[i].region);
            curItem.country(data[i].country);
            curItem.expires(data[i].expires);
            curItem.member(data[i].member);
            curItem.expired(data[i].expired);
            xusers.list.push(curItem)

            // this should probably be somewhere else
            totalRecs = data[i].TotalCount; 
        }
    }
} // if (!data)/else

【讨论】:

  • 我也试过了......(我想我只是发布了我尝试过的许多东西之一)但是当我把它放进去时,我什么也没得到(破坏了我的整个 foreach......不结果被返回。)
  • @RoyBarrow 你在控制台看到什么样的错误?
  • 未捕获的错误:无法解析绑定。消息:TypeError:成员不是函数;绑定值:css:{'approved-false': member()==1}
  • member 是可观察的吗?它是在循环中的对象上,还是xusers 的成员上?如果它不可观察,只需删除括号
  • 从列出的第2个TD(文字:member)可以看出,它是xusers的成员,在xuser模型中标记如下:_self.url = ko.observable(""); _self.member = ko.observable(""); _self.expired = ko.observable("");
猜你喜欢
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 2020-03-14
相关资源
最近更新 更多