2013-07-10 24 views
0

我正在使用挖空映射插件來映射來自服務器的對象。KnockoutJS - toJSON在計算函數中不起作用

我想重新發送此對象,因此,我最終需要將此對象轉換爲字符串。我在計算函數中使用了knockout函數ko.toJSON,以便隱藏字段可以取這個值。

這裏有一個的jsfiddle:http://jsfiddle.net/etiennenoel/4EXSy/13/

這裏是我的視圖模型

function appViewModel() { 
    var self = this; 

    self.playersEvaluation = ko.observableArray(); 
    self.exportToJSON = ko.computed(function() { 
      return ko.toJSON(self.playersEvaluation) 
    }, this); 
} 

var viewModel = new appViewModel(); 

var dataContent = [{ 
    playerId: 2, 
    playerName: "allo", 
    evaluatedExercises: [{ 
     id: 1, 
     evaluationExerciseId: 1, 
     numberOfTries: 6, 
     tries: [{ 
      id: 0, 
      number: 0, 
      result: 0 
     }, { 
      id: 0, 
      number: 0, 
      result: 0 
     }] 
    }] 
}, { 
    playerId: 2, 
    playerName: "allo", 
    evaluatedExercises: [{ 
     id: 1, 
     evaluationExerciseId: 1, 
     numberOfTries: 6, 
     tries: [{ 
      id: 0, 
      number: 0, 
      result: 0 
     }, { 
      id: 0, 
      number: 0, 
      result: 0 
     }] 
    }] 
}] 


viewModel.playersEvaluation = ko.mapping.fromJS(dataContent); 
ko.applyBindings(viewModel) 

這是我在HTML做:

<input type="hidden" name="a" data-bind="value: exportToJSON()" /> 
<pre data-bind="text: exportToJSON()"> 

</pre> 

爲什麼只顯示一個空字符串,而不是內容JSON格式的self.playersEvaluation

回答

2

更換playersEvaluation值,因此本使用equals計算的:

viewModel.playersEvaluation = ko.mapping.fromJS(dataContent); 

需求是這樣的:

viewModel.playersEvaluation(ko.mapping.fromJS(dataContent)); 

爲了設置,而不是替代,可觀察陣列。

更新小提琴: http://jsfiddle.net/dV5GM/1/

+0

這並不工作,投入不會出現了... – CoachNono

+1

科爾參見上面URL – 7zark7

+0

謝謝!是否與此處的某些事情有關,當我嘗試發送表單時,出現超時錯誤(錯誤7)?如果沒有關係,我會再問一個問題! – CoachNono

0

文字輸入和預先綁定是不正確的,它應該只是不帶括號的observalbale的名字「()」,還因爲playersEvaluation已經觀察到的,你應該賦值在淘汰賽的方式是

viewModel.playersEvaluation(ko.mapping.fromJS(dataContent)); 

<input type="hidden" name="a" data-bind="value: exportToJSON" /> 
<pre data-bind="text: exportToJSON"> 

</pre> 

這裏是更新的jsfiddle:http://jsfiddle.net/4EXSy/15/

+0

這是行不通的,投入不再出現在表中... – CoachNono

+1

這裏是更新的jsfiddle:http://jsfiddle.net/4EXSy/15 / –