我对此很陌生,但是无法弄清楚我做错了什么...在订阅发生后,文本区域没有获得新值(在组合框中选择项目)我从我的所有请求中获取数据...我只是无法弄清楚我是否在我的viewmodel中的'subscribe'的成功部分做了什么或者我的绑定有什么问题...任何帮助很感激...
<div style="margin-top: 100px; width: 80%; margin-left: auto; margin-right: auto;">
<h2>Workflows</h2>
<select data-bind="options: Workflows, optionsText: 'Name', value: Workflow, optionsCaption: 'Choose Workflow...'">
</select>
<input data-bind="click: put" id="RunWorkflow" type="button" value="Run Workflow" />
<textarea data-bind="value: Moo" type="text" style="background-color: beige; color: black; display: block; margin-top: 20px; height: 400px; width: 80%;">
</textarea>
<script type="text/javascript">
var WorkflowViewModel = function ()
{
self = this;
self.Name = ko.observable("Who");
self.Moo = ko.observable("George");
var Workflow =
{
Name: self.Name,
Moo: self.Moo
};
self.Workflow = ko.observable();
self.Workflows = ko.observableArray();
$(document).ready(function ()
{
$.ajax({
url: '@Url.Action("Get", "Workflow", new { httproute = "api" })',
cache: false,
type: 'GET',
contentType: 'application/json; charset=utf-8',
data: {},
success: function (data)
{
self.Workflows(data);
}
});
});
self.Workflow.subscribe(function (WorkFlow)
{
$.ajax({
url: '@Url.Action("Get", "Workflow", new { httproute = "api" })',
cache: false,
type: 'GET',
contentType: 'application/json; charset=utf-8',
data: { name: WorkFlow.Name },
success: function (data)
{
self.Moo = data.Moo;
self.Name = data.Name;
}
});
});
};
var workflowViewModel = new WorkflowViewModel();
ko.applyBindings(workflowViewModel);
答案 0 :(得分:1)
您没有正确设置observable的值。改变这个:
self.Moo = data.Moo;
self.Name = data.Name;
到此:
self.Moo(data.Moo);
self.Name(data.Name);