【问题标题】:Binding Issue using Knockout.js?使用 Knockout.js 的绑定问题?
【发布时间】:2014-05-11 16:14:24
【问题描述】:

使用 Knockout.js 的 API。我想动态绑定下拉列表。这里是我用于淘汰赛的代码

function LeadModel() {

        var that = this;
        that.Saleslist = ko.observableArray("") //Sales list is my model



    }

    function SalesEmpNm() {

        var that = this;
        that.LeadModel = new LeadModel();
        that.reset = function () {

            that.LeadModel.Salesid("");
            that.LeadModel.SalesNme("");
        };
        that.submit = function () {

            var json1 = ko.toJSON(that.LeadModel);
            $.ajax({
                url: '/api/values',
                type: 'GET',
                dataType: 'json',
                data: json1,
                contentType: 'application/json; charset=utf-8',
                success: function (data) {
                    var message = data.Message;
                }
            });
        };
    };
    var _vm = new SalesEmpNm();
    $(function () {
        ko.applyBindings(_vm);
    });

这是我的文字

销售名称:

<select id="ddlSales" name="ddlSales" 
        data-bind="options:$root.LeadModel.Saleslist, Value:'Salesid', 
          Text:'SalesNme', Value:LeadModel.Salesid">
            </select>

请建议我动态绑定下拉列表的答案。 感谢和问候

【问题讨论】:

  • 您能展示一下您是如何在可观察数组中填充动态值的吗??
  • 来自值控制器我使用返回值传递值,这是通过我发布的脚本绑定值。请建议我解决这个问题
  • 这里是我的 api 控制器 foreach (var lst in obj) { select.Add(new SelectListItem() { Value = lst.Sales_Person_Id.ToString(), Text = lst.Sales_Person_Name }); }leadmdl.Saleslist = 选择; //Saleslist 是我的列表,其中包含我的下拉列表的文本和值

标签: javascript knockout.js


【解决方案1】:

我看不到您在哪里填充 Saleslist 数组。 但是,以下应该适用于您的情况:

<select id="ddlSales" name="ddlSales"
data-bind='optionsCaption: "[Please Select]", options: _vm.LeadModel.Saleslist(), optionsText: "SalesNme", optionsValue: "Salesid"'></select>

请注意,我将数组绑定为 _vm.LeadModel.Saleslist()

您的模型中的另一个问题是LeadModel 没有您在reset 函数中访问的SalesidSalesNme 属性:

that.reset = function () {
    that.LeadModel.Salesid("");
    that.LeadModel.SalesNme("");
};

【讨论】:

  • 在值控制器中,我正在获取 Saleslist 数组,但不幸的是在我的情况下不起作用。
  • 我的leadmodel类中有这些属性。一切看起来都很完美,但数据没有绑定?任何脚本问题??我很困惑
  • 似乎是脚本问题。检查浏览器控制台是否有任何内容。
【解决方案2】:

问题可能是您正在使用不支持的空字符串 "" 初始化您的 ko.observableArray("")。您可能只需将其更改为 ko.observableArray()

但正如@Ahsan 所说,您粘贴的代码中可能存在其他问题,例如未定义的SalesidSalesNme,并且您的success 处理程序没有填充Saleslist预期的。

【讨论】:

  • 是的,你的权利我没有在脚本中获取数据,你能建议我在我的脚本中哪里可能有问题,但在 api 控制器中我正在获取数据。
【解决方案3】:

也许问题是因为您没有在 Saleslist 中提供任何值。

这将解决这个问题:

this.Saleslist = ko.observableArray([
    { Salesid: 1, SalesNme: "One" },
    { Salesid: 2, SalesNme: "Two" }
});

【讨论】:

  • 静态值没问题,动态值不行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2012-06-13
  • 2012-07-04
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多