【问题标题】:Passing values to KO computed observable within an object将值传递给对象内的 KO 计算 observable
【发布时间】:2013-12-03 19:53:42
【问题描述】:

尝试使用 javascript 将值暴露给对象内的对象内的 KO 计算 observable。我目前在页面上收到“未定义未定义”...

    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()) { ... }

...产生“意外的令牌(”

【问题讨论】:

    标签: javascript object knockout.js javascript-objects


    【解决方案1】:

    请看下面的jsFiddle:http://jsfiddle.net/JD7fL/

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

    意外的令牌错误是Employee 末尾的恶意关闭括号的结果。

    JavaScript

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

    HTML

    <div data-bind="with: identity">
        <div data-bind="text: fullName"></div>
    </div>
    

    【讨论】:

    • 谢谢!只是为了展示我如何使用它(但在这种情况下仍然无法工作)请参阅jsfiddle.net/G2cKu
    • 很高兴我能帮上忙!在这种情况下,您将需要类似 foreach binding 的东西来遍历该小提琴中最外层 div 的父元素中的 employees 数组。如果您想要更详细的答案,可以提出新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2018-04-14
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多