Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
Knockout.js 敲除中嵌套相关可观测项的绑定可观测数组_Knockout.js_Breeze - Fatal编程技术网

Knockout.js 敲除中嵌套相关可观测项的绑定可观测数组

Knockout.js 敲除中嵌套相关可观测项的绑定可观测数组,knockout.js,breeze,Knockout.js,Breeze,我正在使用Breeze,它会自动创建一个嵌套的Observablearray结构,该结构由不同级别的相关观察值组成 我试着模仿这把小提琴的结构。简单地说,我有一个从服务器返回的客户机实体和一个相关的用户实体,Breeze会自动映射到一个可观察的数组。我只需要在我的表单上显示这个数组中的一些客户端属性和一些用户属性 HTML 拨弄 有谁能告诉我如何将optionsText绑定到firstName,或者更好的方法是在给定observableArray结构的情况下绑定firstName+LastNam

我正在使用Breeze,它会自动创建一个嵌套的Observablearray结构,该结构由不同级别的相关观察值组成

我试着模仿这把小提琴的结构。简单地说,我有一个从服务器返回的客户机实体和一个相关的用户实体,Breeze会自动映射到一个可观察的数组。我只需要在我的表单上显示这个数组中的一些客户端属性和一些用户属性

HTML

拨弄


有谁能告诉我如何将optionsText绑定到firstName,或者更好的方法是在给定observableArray结构的情况下绑定firstName+LastName。提前感谢

最简单的方法是重写clientStaffDetails类的toString方法

esp.ClientStaffDetails = function (x) {
    var self = this;

    self.FirstName = new ko.observable(x.firstName);
    self.LastName = new ko.observable(x.lastName);
    self.toString = ko.computed(function () {
        return self.FirstName() + ' ' + self.LastName();
    });

};
我还将optionsText参数更改为User

<div>
    <select data-bind="options: clientAndStaff, optionsText: 'User', value: 'clientId', optionsCaption: 'Select a client'"></select>
</div>


我希望它能有所帮助。

我唯一能做的就是重新建模breeze返回的数据,然后将其添加到我的可观察数组中。对此不太满意,但由于只读数据,现在可以使用

function querySucceeded(data) {
            if (observableArray!= null) {
                var temp = [];
                data.results.forEach(function (val) {
                    temp.push({'id':val.ClientStaffID(),'name':val.User().FirstName() +' '+val.User().LastName() });

                });
                observableArray(temp);
                firstLoad = false;
                return;
            }

        }

谢谢你的回复,达米恩。问题是,我创建这些类只是为了尝试和模拟breeze生成的结构。如果没有这些课程,你只能和客户和员工一起工作。。。你会怎么做?在这里,创建一个计算模型似乎不起作用。
<div>
    <select data-bind="options: clientAndStaff, optionsText: 'User', value: 'clientId', optionsCaption: 'Select a client'"></select>
</div>
function querySucceeded(data) {
            if (observableArray!= null) {
                var temp = [];
                data.results.forEach(function (val) {
                    temp.push({'id':val.ClientStaffID(),'name':val.User().FirstName() +' '+val.User().LastName() });

                });
                observableArray(temp);
                firstLoad = false;
                return;
            }

        }