如何正确应用KO绑定以下示例

时间:2014-09-25 17:52:59

标签: javascript html css data-binding knockout.js

基本上,我在KO中有一个包含2个值的数组的viewModel,我需要在点击main元素时更改元素(<a>)的css类prop(当第一个li>a "Val1"时点击,<main class="stl1">...等等。奇怪的是,没有任何事情发生在<main>

<script>
        var mainViewModel = function () {
            var self = this;

            self.classArr = ['stl1', 'stl2'];
            self.cssUsed = ko.observable(0);

            self.getClass = function ( data, event ) {
                var dat = event.target.value;
                self.cssUsed = self.classArr[dat];
                console.log( dat + ' : ' + self.cssUsed );
            }

        }
        ko.applyBindings( new mainViewModel() );
</script>    

<div class='page'>
    <header>
       <nav>
         <ul >
           <li><a href="#" data-bind="value: 0, click: getClass">Val1</a></li>
           <li><a href="#" data-bind="value: 1, click: getClass">Val2</a></li>
         </ul>

      </nav>
   </header>

  <div id='maincontent'>
          <main data-bind="css: cssUsed" >
              <div class="center"></div>
          </main>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

你几乎是对的。问题是你以错误的方式分配了价值。而不是

self.cssUsed = self.classArr[dat];

尝试

self.cssUsed(self.classArr[dat]);

查看here