Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除js下拉列表未显示foreach中的绑定_Javascript_Knockout.js - Fatal编程技术网

Javascript 敲除js下拉列表未显示foreach中的绑定

Javascript 敲除js下拉列表未显示foreach中的绑定,javascript,knockout.js,Javascript,Knockout.js,我没有收到任何错误,但由于某种原因,我无法在下拉列表中显示值 我的淘汰赛vm: function UserRecruitingViewModel(apiBaseUrl, userId) { var self = this; self.orgs = ko.observableArray(); //ddl org view switcher stuff self.orgDdl = ko.observableArray(); self.selectedOrg = ko.observable(); va

我没有收到任何错误,但由于某种原因,我无法在下拉列表中显示值

我的淘汰赛vm:

function UserRecruitingViewModel(apiBaseUrl, userId) {
var self = this;
self.orgs = ko.observableArray();
//ddl org view switcher stuff
self.orgDdl = ko.observableArray();
self.selectedOrg = ko.observable();
var DropdownOrg = function (name, guid) {
    this.orgName = name;
    this.orgId = guid;
};

//pull initial data
$.getJSON(apiBaseUrl + "?userId=" + userId, function (data) {
    //alert(data);
    $.each(data, function () {
        //alert(data);
        var dropdownOrg = new DropdownOrg();
        var org = new Organization();
        $.each(this, function (k, v) {
            //alert("in foreach");

            if (k == "UserGuid") {
                org.userGuid = v;
            }
            if (k == "OrgGuid") {
                dropdownOrg.orgId = v;
                org.orgGuid = v;
            }
            if (k == "OrgName") {
                dropdownOrg.name = v;
                org.orgName = v;
            }
            if (k == "IsHiring") {
                org.isHiring = v;
            }
            if (k == "Blurb") {
                org.blurb = v;
            }
            //alert("k var: "+k); //field name
            //alert("v var "+v); //field value
            //alert("data var " + data); //array of objects (3)
            //alert(org);

        });
        alert("ddl " + dropdownOrg.name);
        self.orgDdl.push(dropdownOrg);
        self.orgs.push(org);
    });
});
}
在alertddl+dropdownOrg.name中,我看到了正确的值。 在我的页面上,我有以下内容:

<ul class="list-unstyled" data-bind="foreach: orgs">
        <div class="row">
            <div class="col-md-6">
                <p>
                    Viewing:
                    <select class="form-control"
                            data-bind="options: $parent.orgDdl(), optionsText: orgName, value: orgGuid, optionsCaption: 'Change...'"></select>
                </p>
...snip...
当我在浏览器中打开页面时,我会收到显示正确数据的警报,但在ddl中我看到4个选项:更改。。。和3个空白选项。检查显示值不在其中的元素


你知道我把语法弄乱了吗?

弄明白了。我不知道他们为什么会这样,但我不得不改变以下几点:

在虚拟机中:

var DropdownOrg = function (name, orgId) {
    this.name = name;
    this.orgId = orgId;
};
在页面上:

<select class="form-control"
        data-bind="options: $root.orgDdl, optionsText: 'name'"></select>
在抛出一堆警报并提交一堆JSON之后,我发现我的JSON对象中有一些名称不匹配。我想我必须遵循我在DropDownOrg对象中设置的命名,我确实将其更改为匹配,但看到了旧问题的原始问题,但事实证明它是基于我在ajax get请求内的foreach循环中如何分配它的名称。对我来说似乎很奇怪,所以如果有人想插话解释为什么会发生这种情况,请放心

 //pull initial data
$.getJSON(apiBaseUrl + "?userId=" + userId, function (data) {
    $.each(data, function () {
        var dropdownOrg = new DropdownOrg();
        var org = new Organization();
        $.each(this, function (k, v) {
            if (k == "UserGuid") {
                org.userGuid = v;
            }
            if (k == "OrgId") {
                dropdownOrg.orgId = v;
                org.orgId = v;
            }
            if (k == "OrgName") {
                dropdownOrg.name = v;
                org.orgName = v;
            }
            if (k == "IsHiring") {
                org.isHiring = v;
            }
            if (k == "Blurb") {
                org.blurb = v;
            }
        });
        self.orgDdl.push(dropdownOrg);
        self.orgs.push(org);
    });
});