访问ko.utils.extend中的ViewModel属性

时间:2014-03-04 03:39:23

标签: javascript jquery knockout.js

我有一个viewModel。

  var Vm = function() {
        var self = this;
        self.severityList = ko.observableArray(ko.utils.parseJson('@Html.Raw(jsonData)'));
        self.deactivateSeverityLevel.bind(this);
    };
    ko.utils.extend(Vm.prototype, {
        deactivateSeverityLevel: function(item) {

        }
    });

我需要访问ko.utils.extend中的severityList。 我尝试在.extend中添加Vm.severityList,但它不起作用..

1 个答案:

答案 0 :(得分:0)

您将使用this.severityList内的deactivateSeverityLevel访问严重性列表。

根据您拨打的位置,您可能需要使用bind来确保this正确无误。

如果你在自己的范围内绑定它,那么没有像bind这样的<button data-bind="click: deactivateSeverityLevel">Deactive</button> 调用就可以了:

$parent

如果您绑定到其他范围(例如bind),那么您需要 <button data-bind="click: $parent.deactivateSeverityLevel.bind($parent)">Deactive</button> 它。你可以这样做:

var Vm = function() {
    this.severityList = ko.observableArray(ko.utils.parseJson('@Html.Raw(jsonData)'));
    this.deactivateSeverityLevel = this.deactivateSeverityLevel.bind(this);
};

ko.utils.extend(Vm.prototype, {
    deactivateSeverityLevel: function(item) {
        //access this.severityList()
    }
});

或:

deactivateSeverityLevel

在最后一个示例中,您将通过将实现与原型this的当前值绑定在实例上来创建{{1}}函数的绑定版本。