javascript - 如何在填充有 Json 数据的 knockout View 模型中定义函数

标签 javascript knockout.js knockout-mapping-plugin

我在 View 模型中定义函数时遇到问题。

我通过 jquery getJSON 获取 json 数据并将该数据映射到我的 View 模型。

$.getJSON('/Company/GetCompanies', function(data) { 
    var viewModel = new CompanyViewModel()
    viewModel.model = ko.mapping.fromJS(data)
    ko.applyBindings(viewModel)
});

下面是我的 View 模型。正如您所看到的,我想要做的是,通过名为 companyName 的函数返回 viewmodel 的属性之一。

var CompanyViewModel = function() {
    var self = this;

    self.companyName = function()
         return model.CompanyName; 
    };
}

然后我想使用这个函数,如 <span data-bind="text: companyName" />但是,JavaScript 函数不会被计算并以文本形式返回。

我浏览了网络上的 Knockout 示例,但所有这些示例都使用计算的可观察量。

有办法达到这个目的吗?谢谢。

最佳答案

试试这个:

var CompanyViewModel = function(data) {
    ko.mapping.fromJS(data, {}, this); 
};

CompanyViewModel.prototype.fileTaxes = function() {
    console.log("Company is filing taxes.");
};

$.getJSON('/Company/GetCompanies', function(data) { 

    // data would look something like this: 
    // data: { companyName : "MicroStrategy",
    //         founderName : "etc" }
    var viewModel = new CompanyViewModel(data);
    ko.applyBindings(viewModel)
});

关于javascript - 如何在填充有 Json 数据的 knockout View 模型中定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11343494/

相关文章:

asp.net-mvc - 我可以将 Knockout ObservableArray 作为参数传递给 ASP.NET MVC Razor @Url.Action

knockout.js - knockout 应用程序的性能调整 - 改进响应时间的指南

javascript - 以编程方式对 Chrome 堆进行快照

javascript - 获取对象数组中的所有参数

javascript - Angular 计时器指令不适用于 ionic 框架

knockout.js - 如何清除 knockout 中的可观察属性?

javascript - KnockoutJS 未在复选框列表中选择选中的值

javascript - 计算给定日期的一天的公式工作正常,但不适用于某些特定日期

html - Knockout JS - 数据绑定(bind)到文字?

knockout.js - 使用 Knockout 和 Ember 而不是 Handlebars