【问题标题】:Knockout.js textarea binding not updating after subscribe (item selected in combo box)订阅后不更新 Knockout.js 文本区域绑定(在组合框中选择的项目)
【发布时间】:2014-03-02 16:08:18
【问题描述】:

我对此很陌生,但无法弄清楚我做错了什么......在订阅发生后文本区域没有获得新值(在组合框中选择的项目)我'我从我的所有请求中取回数据...我只是不知道我是否没有在我的视图模型中的“订阅”的成功部分做某事,或者我的绑定是否有问题...任何帮助不胜感激...

<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);

【问题讨论】:

  • 哦,这可能看起来很奇怪,因为看起来我在订阅请求中获得了相同的信息...有点不同...我没有在初始文档中获得 Moo。准备好了,因为我假设它可能很大,所以我只想在请求时将其关闭...我只是在订阅中再次设置名称,因为我正在修补试图找出问题所在...抱歉任何混乱

标签: javascript knockout.js asp.net-web-api


【解决方案1】:

您没有正确设置 observable 的值。改变这个:

self.Moo = data.Moo;
self.Name = data.Name;

到这里:

self.Moo(data.Moo);
self.Name(data.Name);

【讨论】:

  • 解决了...谢谢
猜你喜欢
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 2016-06-12
相关资源
最近更新 更多