Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/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
Javascript 将值传递给对象内可观测的计算值_Javascript_Object_Knockout.js_Javascript Objects - Fatal编程技术网

Javascript 将值传递给对象内可观测的计算值

Javascript 将值传递给对象内可观测的计算值,javascript,object,knockout.js,javascript-objects,Javascript,Object,Knockout.js,Javascript Objects,试图使用javascript将值公开给对象中的对象内的可观测值。我现在在页面上看到“未定义” function Employee () { var self = this; self.identity = ko.observable({ employeeTitle: ko.observable(""), titles: ko.observableArray(['Mr','Mrs',

试图使用javascript将值公开给对象中的对象内的可观测值。我现在在页面上看到“未定义”

    function Employee () {            

        var self = this;

        self.identity = ko.observable({
            employeeTitle: ko.observable(""),
            titles: ko.observableArray(['Mr','Mrs','Ms']),
            givenName: ko.observable(""),
            lastName: ko.observable(""),
            otherNames: ko.observable(""),

            fullName: ko.computed(function(givenName,lastName){
                return givenName + " " + lastName;
            })

        });

           //rest of object
  )};
我已经尝试了各种选择,我正在接近——有什么想法吗

function(givenName(), lastName()) { ... }

…产生“意外令牌”(

请参阅以下JSFIDLE:”

ko.computed
的函数参数不需要将
givenName
firstName
作为参数。您可以简单地引用要在计算函数中使用的字段。但是,由于对象中有
fullName
,而不是构造函数,因此无法引用这些字段我将
self.identity
拆分为一个新的
identity
构造函数

意外的令牌错误是由于
员工
末尾的恶意结账导致的

JavaScript HTML


谢谢!为了展示我是如何使用它的(但在这种情况下仍然不起作用),很高兴我能提供帮助!在这种情况下,您将需要类似于a的东西来迭代该小提琴最外层div的父元素中的
employees
数组。如果您想要更详细的答案,可以问一个新问题。
function Employee () {            
    var self = this;

    self.identity = ko.observable(new Identity());
};

function Identity() {
    var self = this;

    self.employeeTitle = ko.observable("");
    self.titles = ko.observableArray(['Mr','Mrs','Ms']);
    self.givenName = ko.observable("John");
    self.lastName = ko.observable("Doe");
    self.otherNames = ko.observable("");

    self.fullName = ko.computed(function(){
        return self.givenName() + " " + self.lastName();
    });
}

ko.applyBindings(new Employee());
<div data-bind="with: identity">
    <div data-bind="text: fullName"></div>
</div>