2013-05-31 2 views
0

JavaScript 변수를 KO Observable 값의 값에 할당 할 수 있는지 확인하려고합니다.KnockoutJS - JavaScript 변수에 Observable 값을 할당합니다.

이유는이 속성을 jquery 모듈에 속성으로 할당하고자하기 때문입니다.

나는 내가 할 수있는 알고

var viewModel = { 
    firstName : ko.observable("Bert"), 
    lastName : ko.observable("Smith"), 
    pets : ko.observableArray(["Cat", "Dog", "Fish"]), 
    type : "Customer" 
}; 
viewModel.hasALotOfPets = ko.computed(function() { 
    return this.pets().length > 2 
}, viewModel) 


var jsonData = ko.toJSON(viewModel); 

하지만, 내가보기 모델의 모든 것을 무엇을하지 않으려면? 나는 단지 n 개의 항목을 선택할 수 있습니까? 여기

+0

생략하고 싶은 항목은 무엇입니까? 수동으로 제외 할 수있는 요소가 충분하지 않습니까? –

+0

필요는 없습니다. 이것은 내가 제공 한 예일뿐입니다. 그러나 예를 들어, firstName 및 type과 같을뿐입니다. 나는 단지 선택 값을 얻을 수 있는지 알고 싶다. – Jesse

+0

당신은 녹아웃 매핑 플러그인으로 뭔가를 할 수 있을지 모르지만, 나는 내 머리 꼭대기에서 문법이 확실하지 않다. –

답변

1

이 두 개념 :

코드 자바 스크립트 배열을 조작

  • 관찰 녹아웃에서 개체 가져 : 넉 아웃에서

    var start = 1; // index of Dog 
    var n = 1; // just one item 
    var jsonData = ko.toJSON(viewModel.pets().slice(start, start + n)); 
    

    , 관찰 가능한이 기능을 . 값을 설정하려면 매개 변수로 호출합니다. 그 가치를 얻으려면, 당신이 그것을 부릅니다.

    JavaScript 배열에는 더 작은 배열을 가져 오는 데 사용할 수있는 슬라이스 기능이 있습니다.

    당신이 서브 세트 뷰 모델에서 작동 뷰 모델, ko.toJSON에서 n 개의 필드를 가지고 싶다면 것은 : 당신이 특정 필드를 원하는 경우에

    var n = 2; 
    var count = 0; 
    var subModel = {}; 
    for (var k in viewModel) { 
        if (count >= n) break; 
        if (viewModel.hasOwnProperty(k)) { 
         subModel[k] = viewModel[k]; 
         count++; 
        } 
    } 
    
    var jsonData = ko.toJSON(subModel); 
    

    생성 문제에 대한 의견을 기반으로

    UPDATE 서브 세트 된 모델 :

    var jsonData = ko.toJSON({ 
        firstName: viewModel.firstName, 
        type: viewModel.type 
    }); 
    
  • 관련 문제