我想知道如何为我的 Knockout ViewModel 中的项目应用使用 $data 连接的 css 类名称。
目标
当用户单击“Praise”按钮(我的 ViewModel 数组中的一个项目)时,我想将 css 类“feedbackItemIconPraise”应用于 LI。如果用户点击“批评”,我想申请“feedbackItemIconPraise”类。
我认为使用 $data 在 data-bind 属性中连接一个 css 类是可行的方法,但可能是错误的。
代码
我的 ViewModel 的相关部分:
var FeedbackViewModel = function () {
var self = this;
self.feedbackItemTypes = ['Praise', 'Criticism', 'Problem', 'Question'];
self.selectedFeedbackType = ko.observable('Praise');
self.updateSelected = function (param) {
self.selectedFeedbackType(param);
};
};
var feedbackViewModel = new FeedbackViewModel();
ko.applyBindings(feedbackViewModel, document.getElementById("feedbackModal"));
我的视图显示的相关部分:
<div id="feedbackListContainer">
<ul class="thumbnails" id="feedbackList" data-bind="foreach: feedbackItemTypes">
<li class ="feedbackItem" data-bind="click: $parent.updateSelected, text:$data, attr:{id:'feedbackItem'+$data, title:$data}, css: {'feedbackItem-Highlighted':$data==$parent.selectedFeedbackType(), 'feedbackItemIcon'+$data: true}">
</li>
</ul>
</div>
问题
我认为我错的是应用 CSS 类“'feedbackItemIcon' + $data”。我想我误解了 css 类的应用方式,以及这在 Knockout 中是否可行,或者与 Knockout 的工作方式不一致。当我尝试这样做时,我的所有文本都消失了,所以我认为我完全搞砸了语法。
将不胜感激一些见解。