2014-12-02 1 views
1

현재 내 검도 그리드의 페이지 매김/필터링에 문제가 있습니다. 내 표는 문자 그대로 모델에서 데이터를 뱉어 내고 모델에서 데이터를 표시하지만 Kendo 툴팁에는 녹아웃 바인딩이 적용된 6 개의 열 4가 꽤 표준 적입니다. 내가 겪고있는 문제는 특히 툴팁 MVVM 바인딩과 관련이 있습니다. 두 번째 페이지로 이동하거나 표를 필터링하면 도구 설명이 나타나지 않습니다.검도 그리드 용 녹아웃 바인딩 다시 적용하기

바인딩을 페이지에 적용 할 때 새로운 행에 대한 새로운 html이 존재하지 않는다는 문제점을 좁혀 냈습니다. 바인딩을 새로운 HTML 권한에 다시 적용하는 간단한 문제는 무엇입니까? 잘못된. 그게 확실 해요 솔루션을하지만 난 어떻게 새로운 HTML을 생성하는 자사의 검도로 그것을 달성하기 위해 알아낼 수 없으며 그것을 가로 채고 바인딩을 다시 적용하는 새로운 HTML을 잡아 수있는 방법을 알아낼 수 없습니다.

self.interceptPaging = function(e) { 
    var newElements = e.sender.content; 
    ko.applyBindingsToNode(newElements[0], null, viewModel); 
} 

그러나 어디 새로운 요소에서받을 수 있나요 :

나는이 솔루션은이 같은 것을 포함 할 겠지? 즉, e.sender.content는 격자를 두 번 바인딩하는 것에 대한 오류를 발생시킵니다. 제안을 환영합니다!

내 문제의 작동 예제는 내 Fiddle을 참조하십시오.

UPDATE : Here

업데이트 # 2 : 솔루션

찾을 솔루션 jsFiddle 녹아웃 3.2 작업에 문제가있는 것 같다, 나는이 Telerik의 도장이 점을 연결

. 위의 databound 함수 위에 하위 바인딩을 사용하지 않도록 사용자 지정 바인딩 처리기를 추가해야했습니다.

ko.bindingHandlers.allowBindings = { 
    init: function (elem, valueAccessor) { 
     // Let bindings proceed as normal *only if* my value is false 
     var shouldAllowBindings = ko.unwrap(valueAccessor()); 
     return { controlsDescendantBindings: !shouldAllowBindings }; 
    } 
}; 

이 속성을 검도 그리드 div에 추가했습니다.

<div data-role="grid" 
    data-bind="kendoGrid: gridOptions, allowBindings: false " 
    style="height: 500px"> 
</div> 

위의 applyBindings 호출 전에 ko.cleanNode도 호출해야했습니다. 따라서 데이터 바인딩 기능은 다음과 같습니다.

self.dataBound = function (e){ 
    var body = e.sender.element.find("tbody")[0]; 

    if (body) { 
     ko.cleanNode(body); 
     ko.applyBindings(ko.dataFor(body), body); 
    }   
}; 

업데이트 된 내용은 입니다.

답변

1

당신이 옳습니다. Kendo는 새로운 요소를 페이지에 도입하고 녹아웃은 바인딩을 적용해야한다는 단서가 없습니다.

당신은이에 대한 데이터 바인딩 이벤트를 활용할 수 있습니다 : 나는 아래에 바이올린을 업데이트 한

dataBound: function(){ 
    var body = this.element.find("tbody")[0]; 

    if (body) { 
     ko.applyBindings(ko.dataFor(body), body); 
    }} 
} 

. 또한

http://jsfiddle.net/oe3nrk8f/2/

, 당신은 자동으로이 작업을 수행 할 수있는 검도 녹아웃 라이브러리의 소스를 수정할 수있는 방법을 보려면이 질문에 살펴하지만 잔인한 수 있습니다.

https://stackoverflow.com/a/13863191/4316646

+0

이 녹아웃의 버전 2.2 jsfiddle 정말 잘 작동하지만 녹아웃의 버전 3.2을 실행하는 내 응용 프로그램으로 당겨 때, 나는 "이 같은 요소에 바인딩을 여러 번 적용 할 수 없습니다"라는 에러 . 나는 3.2가 나에게 바이올린에 문제를주고 있기 때문에 녹아웃을 위해 2.2를 연결했다. 나는 녹아웃 3.2에 직면하고있는 것의 예를 얻기 위해 Telerik dojo에 가야만했다. http://dojo.telerik.com/Ikil 제안 사항이 있으십니까? 하루 종일 이걸 알아 내려고 노력 했어. – Icestorm0141

+0

해결책을 찾았습니다. 위의 databound 함수 위에 하위 바인딩을 사용하지 않도록 사용자 지정 바인딩 처리기를 추가해야했습니다. 이 속성을 검도 그리드 div에 추가했습니다. 위 applyBindings 호출 전에 ko.cleanNode를 호출해야했습니다. 업데이트 된 Telerik Dojo를 참조하십시오. http://dojo.telerik.com/Ikil/2 – Icestorm0141

+0

정말 잘 알려드립니다. 업데이트 해 주셔서 감사 드리며 기꺼이 처리해 드리겠습니다. –