我定你的代码。有很多无用的代码。所以请让我知道如果我删除了太多。
这是视图:
<select data-bind="options: availableTemplates,
value: selectedTemplate,
optionsText: 'Name'"></select>
<br />
<div data-bind="with: selectedTemplate">
<textarea cols="60" rows="8" style="background: lightblue"
data-bind="value: Code,
codemirror: { 'lineNumbers': true, 'mode': 'javascript' }">
</textarea>
</div>
和视图模型:
// Overall viewmodel for this screen, along with initial state
function ValidationViewModel() {
var self = this;
self.selectedTemplate = ko.observable();
// Non-editable data - would come from the server
self.availableTemplates = [{
Name: "Range Validation",
Code: "var minValue = 'A';\r\nvar maxValue = 'Z';\r\n\r\nreturn (e.value >= minValue && e.value <= maxValue) \r\n ? true \r\n : 'this is all wrong!';"
}, {
Name: "DateTime",
Code: "var newDate = new Date(e.value);\r\n\r\nif (newDate != 'Invalid Date')\r\n return true; \r\n\r\nreturn 'value is not a valid dateTime';"
}, {
Name: "Decimal",
Code: "if (e.value == null || e.value.length == 0)\r\n return 'please, type something'; \r\n\r\nreturn isFinite(e.value);"
}];
}
See Fiddle
我希望它能帮助。
对不起,我只是意识到我忘了加入小提琴。 请你能解释什么不工作(基于小提琴)。 – Damien
所选模板中的代码已经出现在常见的textarea中,但我想代码已经出现在codemirror区域。 http://jsfiddle.net/6sd7f/3/如果我添加** ko.bindingHandlers.codemirror **它不能正常工作(代码没有出现在codemirror区域)。 http://jsfiddle.net/6sd7f/4/我做错了什么?对不起,愚蠢的问题,但我只是学习,并感谢你的快速答案。 – drets
请看看这个小提琴: http://jsfiddle.net/UkHu6/1/ – Damien