바인딩 내가 계산 CSS는 "예를 들어 내가 CSS를이 class="icon running
같이 할, 그것은 워크 플로우의 각 단계의 상태를 시각화 아이콘이 표시되고 무엇이지우기 CSS
this.iconCss = ko.computed(function() {
var css = { icon: true };
css[this.state().toLowerCase()] = true;
return css;
}, this);
처럼 결합했다 또는 class="icon failed"
등
문제 내가 먼저, 내가 그것을 할당하는 것이 중요하지 않습니다이 class="icon queued"
을 가지고 잘못 class="icon queued running"
될 것입니다 새 클래스를 실행하는 상태를 변경하는 경우, 그래서 늘 바인딩 CSS는 기존의 클래스를 취소한다는 것입니다 새로운 객체 리터럴은 이전 클래스가 지워지지 않을 것입니다. 한 가지 방법은 리터럴 객체를 만들고 반복 실행하고 모든 속성을 false로 설정합니다. 그게 내 마지막 수단이라면 css 바인딩을 지우는 방법으로 만들어진 클리너가 없다는 것입니다.
편집
:이 솔루션입니다하지만 난 그게this.iconCssState = {};
this.iconCss = ko.computed(function() {
for (var index in this.iconCssState) {
this.iconCssState[index] = false;
}
this.iconCssState.icon = true;
this.iconCssState[this.state().toLowerCase()] = true;
return this.iconCssState;
}, this);
이 대신 바인딩 '클래스'와 'ATTR'를 사용하려고 했습니까? ** attr : { 'class': somevalue} **처럼. 매번 전체 클래스 값을 대체해야합니다. 이 경우 계산 된 값은 'icon queued'와 같은 것을 반환해야합니다. – gbs
그 문제는 IE가 class 속성에 문제가 있다는 것입니다. className 속성을 사용해야합니다. – Anders
_class_를 따옴표로 묶어야합니다. 여기에 IE8에서 작동하는 [피들] (http://jsfiddle.net/nC7XY/2/)가 있습니다. – gbs