我有一个问题,我无法弄清楚.. 关于JSbin的例子:http://jsbin.com/wiwuwepe/1/edit
基本上,在
<script id="QuestionTemplate" type="text/html">
<div class="well">
<div class="form-group">
<div class="col-md-5">
<p class="form-control-static" data-bind="text: QuestionText"></p>
</div>
</div>
<div class="form-group">
<div class="col-md-5">
<!-- THIS IS WHERE I WANT COMPUTED FOR EACH SURVEYQUESTION -->
<p class="form-control-static" data-bind="text: QuestionTypeTemplate"></p>
</div>
</div>
</div>
QuestionTypeTemplate显示未定义,但模型为
function SurveyQuestion(data) {
var self = this;
self.QuestionText = ko.observable(data.QuestionText);
self.QuestionType = ko.observable(data.QuestionType);
self.QuestionAnswers = ko.observableArray(data.QuestionAnswers);
self.QuestionTypeTemplate = ko.computed(function () {
/*
if( self.QuestionType() == 0) {
return "radio";
} else if (self.QuestionType() == 1) {
return "checkbox";
}
*/
return "This is what i want";
}, self);
}
请检查jsbin上的完整代码。只需在QuestionTemplate脚本/ html中取消注释1行。 当我将我的例子与http://knockoutjs.com/examples/cartEditor.html进行比较时,我真的找不到很大的区别,为什么会这样,以及为什么我的不行。
答案 0 :(得分:2)
您的调查功能
而不是
self.SurveyQuestions = ko.observableArray(data.SurveyQuestions);
你需要使用这个
var questions = [];
for(i = 0 ; i<data.SurveyQuestions.length ; i++) {
questions.push(new SurveyQuestion(data.SurveyQuestions[i]));
}
self.SurveyQuestions = ko.observableArray(questions);