2014-05-17 4 views
0

검도 그리드에 knockout.js 바인딩을 위해 knockout-kendo.js를 사용하고 있습니다. 개체의 첫 번째 수준 속성을 바인딩하면 제대로 작동합니다. 위의 예 항목 속성에 http://jsfiddle.net/rniemeyer/jZtg5/knockout-kendo.js 데이터 바인딩 문제

당신이 그리드를 검도에 바인딩 개체의 두 번째 수준 속성을 사용하는 경우 (예 : ViewModel.Items)

그러나 그때는 아무튼 뷰 모델에 정의되어있다 - 여기 은 샘플입니다 일하지 마라. 다음은 바인딩이 작동하지 않는 샘플입니다. - http://jsfiddle.net/thakkar/QhF2W/3/

이 예제에서 items 속성은 viewmodel에서 직접 정의되지 않습니다. 대신 뷰 모델에서 사용되는 객체의 속성입니다. (즉 ViewModel.obj.Items)이 여기

var Item = function(id, name, type) { 
    this.id = id; 
    this.name = ko.observable(name); 
    this.type = type; 
}; 

var vm2 = function() { 
    this.items = ko.observableArray([ 
     new Item(1, "one", "a"), 
     new Item(2, "two", "b"), 
     new Item(3, "three", "a") 
    ]); 

var ViewModel = function() { 
    this.obj = ko.observable(new vm2()) 
}; 

ko.applyBindings(new ViewModel()); 

답변

3

업데이트 고정 바이올린이다

http://jsfiddle.net/DianaNassar/z439C/2/

기본적하면 중괄호 누락 하였다는 콘솔 에러 있었다].

kendoGrid: {data:obj.items,scrollable: false,columns: [ 
          { field: 'id', title: 'id', width: 150 }, 
          { field: 'name', title: 'name' }, 
          { field: 'type', title: 'type' } 
         ] } " 

녹아웃 관찰 가능한, 당신은 전달하여 자신의 가치를 기능 설정 :

kendoGrid: {data:obj().items(),scrollable: false,columns: [ 
          { field: 'id', title: 'id', width: 150 }, 
          { field: 'name', title: 'name' }, 
          { field: 'type', title: 'type' } 
         ] } " 

하지 :하지만 중요한 것은 당신이이 개 수준을 드릴 다운 할 경우이 같은 그리드를 결합했다입니다 새 값을 함수의 인수로 사용하려면 이고 인수가없는 경우을 읽습니다.

이 정보가 도움이되기를 바랍니다.

+1

+1, 대신에'data-bind = "를 가진 요소를 obj"'로 감싸고'kendoGrid : {data : items, ...'를 직접 사용하는 것입니다. – Tomalak

+0

네, 너무 효과가 있습니다, 감사합니다! :) –

+0

예, 맞습니다. 자바 스크립트 코드에 오류가 있습니다. 당신의 도움을 주셔서 감사합니다. – Hitesh