KnockoutJS 和 c# 视图
Posted
技术标签:
【中文标题】KnockoutJS 和 c# 视图【英文标题】:KnockoutJS and c# view 【发布时间】:2020-07-09 13:28:33 【问题描述】:也许是一个微不足道的问题,但我需要这方面的帮助。简而言之,这是我的视图模型文件的一部分,在调试模式下编译项目时可以正常工作:
var getValidDocs = function ()
if (exports.data.Language() == 'it-IT' && exports.data.TaxCode() != null)
exports.validRegistrationFiles.removeAll();
ko.utils.arrayForEach(exports.allValidRegistrationFiles(), function (myRegistrationFile)
var titolo = myRegistrationFile.Title._latestValue;
//Here the browser gives me an "Uncaught TypeError: Cannot read property 'includes' of undefined"
if (isIva.test(exports.data.TaxCode()) && titolo.includes('si_partita_iva'))
exports.validRegistrationFiles.push(myRegistrationFile);
if (!isIva.test(exports.data.TaxCode()) && titolo.includes('no_partita_iva'))
exports.validRegistrationFiles.push(myRegistrationFile);
)
console.log(exports.validRegistrationFiles());
;
但是当我在发布模式下编译时,我无法访问
myRegistrationFile.Title._latestValue
属性。
因此,我做不到
titolo.includes('si_partita_iva')
因为未定义。那么,是否有一个属性,相当于 _latestValue,我可以在这种情况下使用?
【问题讨论】:
如果你能分享一个minimal reproducible example,那就太棒了。 避免使用_latestValue
属性作为其仅在 knockout.debug.js iirc 上。你应该只需要var titolo = myRegistrationFile.Title()
。获取当前值。
【参考方案1】:
最后这就是我所做的
<!-- ko foreach: $root.validRegistrationFiles -->
<div class="row">
<!-- ko if: $root.checkIVA -->
<!-- ko if: Title().includes('si_partita_iva') -->
<div class="col-sm-12 icon">blah blah blah</div>
<!-- /ko -->
<!-- /ko -->
<!-- ko if: $root.checkCodFiscale -->
<!-- ko if: Title().includes('no_partita_iva') -->
<div class="col-sm-12 icon">blah blah blah</div>
<!-- /ko -->
<!-- /ko -->
</div>
<!-- /ko -->
因为其他一切都惨遭失败
【讨论】:
以上是关于KnockoutJS 和 c# 视图的主要内容,如果未能解决你的问题,请参考以下文章
KnockoutJS 3.X API 第二章 数据监控视图模型与监控