2013-01-21 2 views
1

인사 모두 knockoutjs 사람들.

이 예제에서는 DIV에 추가하려는 두 개의 추가 CSS 클래스가 있습니다.

<div data-bind="foreach: [{name: 'Hello', size:'Triple'}]"> 
     <div class="tile" 
     data-bind="css: {'tile-selected': true, $data.size : true}"> 
     </div> 
    </div> 

첫 번째 것은 '부울'에 따라 '타일 선택'됩니다. 이것은 잘 작동합니다.

두 번째는 실제로 '배'클래스의 이름 (이 예에서, 항상 추가, 즉 '참')

내가 오류 얻을 :

catch되지 않은 오류 : 할 수 없음 바인딩을 파싱합니다. 메시지 : SyntaxError : 예기치 않은 토큰입니다. 바인딩 값 : css : { 'tile-selected': true, $ data.size : true}

나는 $ data.size 부분을 사용하여 'Triple'리터럴을 사용할 수 없다고 가정합니다. '크기'속성에서 가져옵니다. 내가 할 수있는 방법이 있니? ($ data [ 'size']도 작동하지 않는 것 같습니다.)

+0

$ data.size의 유형은 무엇입니까 : 여기에 동적 CSS 바인딩 예를 확인? 그것은 관측 가능합니까? – ryadavilli

+0

은 $ data가 foreach의 현재 반복이 아닌가요? –

+0

예, 크기에 관해 묻고있었습니다. – ryadavilli

답변

1

ko observables 또는 속성을 클래스 이름으로 사용할 수 없습니다. 대신 이것을 위해 별도의 속성을 만들고 동적 CSS 바인딩에 다음과 같은 속성을 사용해야합니다.

<div data-bind="css: sizeCSS"> Profit Information</div> 

var viewModel = { 
/// some view model properties here. 
     }; 

viewModel.sizeCSS = ko.computed(function() { 
    return this.size(); 
}, viewModel); 

편집 : http://knockoutjs.com/documentation/css-binding.html

+0

도움을 주셔서 감사합니다 –

+0

내가 발견 한 사실은 CSS 클래스 이름으로 속성을 가질 수 없다는 것이 엄격히 사실이 아니라는 것입니다. 템플릿에서 사용할 수 있습니다 ... –

+0

@RonWeston CSS 바인딩 또는 클래스 바인딩이 있습니까? 그것이 CSS 바인딩과 함께 있다면 샘플을 공유 할 수 있습니까? – ryadavilli

관련 문제