【发布时间】:2021-04-14 21:34:28
【问题描述】:
我正在努力寻找一种方法来获取函数之外可用的属性 Override & Justification。代码是:
self.CasOverridesViewModel = ko.observable(self.CasOverridesViewModel);
var hasOverrides = typeof self.CasOverridesViewModel === typeof(Function);
if (hasOverrides) {
self.setupOverrides = function() {
var extendViewModel = function(obj, extend) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
extend(obj[property]);
}
}
};
extendViewModel(self.CasOverridesViewModel(), function(item) {
item.isOverrideFilledIn = ko.computed( function() {
var result = false;
if (!!item.Override()) {
result = true;
}
return result;
});
if (item) {
item.isJustificationMissing = ko.computed(function() {
var override = item.Override();
var result = false;
if (!!override) {
result = !item.hasAtleastNineWords();
}
return result;
});
item.hasAtleastNineWords = ko.computed(function() {
var justification = item.Justification(),
moreThanNineWords = false;
if (justification != null) {
moreThanNineWords = justification.trim().split(/\s+/).length > 9;
}
return moreThanNineWords;
});
item.isValid = ko.computed(function() {
return (!item.isJustificationMissing());
});
}
});
}();
}
我已经尝试过设置一个全局变量,例如:
var item;
or
var obj;
if(hasOverrides) {...
所以最让我感动的是我无法掌握连接是如何建立的 底层模型 CasOverridesviewModel 之间。正如我假设 self.CasOverridesViewModel.Override() 将能够获取写入屏幕上的数据。
我做的另一个尝试是 var override = ko.observable(self.CasOverridesViewModel.Override()),这导致了 js typeError,因为您无法从未定义的对象中读取。
因此,如果有人能够就如何从此函数之外可用的输入字段中获取字段提供一些指导。将不胜感激。 如果我需要澄清某些方面,请不要犹豫。
感激不尽!
【问题讨论】:
-
目前还不是很清楚您面临的问题是什么:您的第一个 sn-p 有什么问题吗?如果是这样,它到底是什么?另外,
self.CasOverridesViewModel在您的 sn-p 的第一行中分配值之前包含什么?
标签: javascript asp.net-mvc knockout.js