Добавьте CSS в div, используя функцию в knockoutJS

0

Я пытаюсь реализовать привязку CSS в knockoutJS.

Я хочу напечатать все имена в массиве имен, один за другим. Уловка состоит в том, что есть еще один массив, который имеет некоторые особые имена.

Все специальные имена должны иметь " good " класс CSS. А остальное - " bad " класс css.

Вот что я пробовал:

HTML

 <!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery.min.js"></script>
<link href="http://getbootstrap.com/dist/css/bootstrap.css" rel="stylesheet" type="text/css" />
<script src="http://getbootstrap.com/dist/js/bootstrap.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/3.0.0/knockout-min.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>



  <div data-bind="foreach : items">
    <div data-bind="text: $data, css: checkName($data)" ></div>
  </div>


</body>
</html>

JAVASCRIPT

var dataModel = function(){

  self.items = ko.observableArray(["don","bom","harry","sharry","ron"]);
  self.names = ["ron","harry"];

  self.checkName = ko.observable(function(name){

    if( $.inArray(name,self.names) ){
            return "good";
        }
        else{
            return "bad";
        }
  });

};

ko.applyBindings(new dataModel());

FIDDLE - http://jsbin.com/difaluwo/2/edit

Теперь его не вокование. В консоли это дает мне "Script error. (line 0)"

Благодаря !

Теги:
knockout.js

1 ответ

1
Лучший ответ

Вставка CSS-привязки немного сложна. Вы указываете имя класса, а затем условие, когда оно будет применено.

JSBIN

<div data-bind="foreach : items">
    <div data-bind="text: $data, css: { good: isGoodName($data), bad: !isGoodName($data) }" ></div>
  </div>

И ваша модель взгляда:

var dataModel = function(){

  self.items = ko.observableArray(["don","bom","harry","sharry","ron"]);
  self.names = ["ron","harry"];

  self.isGoodName = function (name) {
    return $.inArray(name, self.names) !== -1;
  };

};

ko.applyBindings(new dataModel());
  • 0
    Потрясающие ! Благодарю. Вы сделали мой вечер !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню