使用敲除ViewModelBase调用或应用JavaScript
我有一个基本视图模型:使用敲除ViewModelBase调用或应用JavaScript,javascript,knockout.js,Javascript,Knockout.js,我有一个基本视图模型: var baseViewModel = function () { var self = this; // <!----- AJAX SAVING ------!> \\ self.saving = ko.observable(); // <!----- SEARCHING ------!> \\ self.fields = ko.observableArray(); self.selectedF
var baseViewModel = function () {
var self = this;
// <!----- AJAX SAVING ------!> \\
self.saving = ko.observable();
// <!----- SEARCHING ------!> \\
self.fields = ko.observableArray();
self.selectedField = ko.observable();
self.searchTerm = ko.observable().extend({ throttle: 150 });
}
而且它工作得很好。我很满意
现在,我想使用一些初始数据设置self.fields属性,这些数据要通过line baseViewModel.callthis发送,我不确定是否要执行此操作:
var viewModel = function () {
baseViewModel.call(this, new userModel()); // just a function object
var self = this;
}
或:
因此,baseViewModel将执行以下操作:
var baseViewModel = function (data) {
var self = this;
// <!----- AJAX SAVING ------!> \\
self.saving = ko.observable();
// <!----- SEARCHING ------!> \\
self.fields = ko.observableArray().getKeys(data); // viewModel parameter passed here
self.selectedField = ko.observable();
self.searchTerm = ko.observable().extend({ throttle: 150 });
}
我已经阅读了这篇文章,但仍然不确定该去哪里,我已经阅读了官方文件
编辑
我刚刚尝试了call,因为据我所知,唯一的区别是要么用call放入一堆参数,要么用apply放入一个arg数组
到目前为止,它一直在使用调用,只是想知道选择此方法是否会有任何警告?除非有任何警告,唯一的区别是参数是作为and数组还是单独的对象出现 通过调用,您可以执行baseViewModel.callthis[,arg1,arg2,….argn]
使用apply,您可以使用baseViewModel.apply此[,arg_array[]]当您要传递的参数位于数组中时,您可以使用apply,因为您的userModel对象不在数组中,所以只需使用callfair即可,没有任何警告?
var viewModel = function () {
baseViewModel.apply(this, new userModel()); // just a function object
var self = this;
}
var baseViewModel = function (data) {
var self = this;
// <!----- AJAX SAVING ------!> \\
self.saving = ko.observable();
// <!----- SEARCHING ------!> \\
self.fields = ko.observableArray().getKeys(data); // viewModel parameter passed here
self.selectedField = ko.observable();
self.searchTerm = ko.observable().extend({ throttle: 150 });
}