基本上,我在 KO 中有 viewModel 具有 2 个值的数组,我需要在 main
时更改元素 ( <a>
) 的 css 类属性正在单击元素(当第一个 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>
最佳答案
你几乎是对的。问题是您以错误的方式分配了值(value)。而不是
self.cssUsed = self.classArr[dat];
尝试
self.cssUsed(self.classArr[dat]);
检查一下 here
关于javascript - 如何正确应用KO绑定(bind)下面的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26045017/