所以我有一个带有Web API后端的单页面应用程序,所以我从多个端点检索数据,因此有多个嵌套的视图模型。 该应用程序具有非常模块化的设计,因此在这里获取代码有点困难,但我会尽我所能。
我尝试做的是使用data-bind if语句仅在Condition1或Condition2为true时包含HTML段,Im遇到问题的部分是Condition1和Condition2在一般viewmodel中,而值我想在交易视图模型中绑定,如“with:deal”语句所示。 任何人都知道我怎么能做到这一点?
视图模型
var self = this;
self.deal = ko.observable();
self.general = ko.observable();
calculation.getBasicFactsDeal(calculationId, function (data) {
self.deal(mapping.fromJS(data));
var data = self.deal();
});
calculation.getBasicFactsGeneral(calculationId, function (data) {
self.general(mapping.fromJS(data));
var data = self.general();
});
HTML:
<div class="section" data-bind="with: deal">
<div data-bind="if: $root.general().Condition1 || $root.general().Condition2 >
<label >Is this a New Client?</label>
<input type="radio" name="RadioGroup" id="Radio1" value="true" data-bind=" checkedRadioToBool: NewClient" />
<label for="radio1">Yes</label>
<input type="radio" name="KSTProcurmentRadio" id="Radio2" value="false" data-bind=" checkedRadioToBool: NewClient" />
<label for="radio2">No</label>
</div>
</div>
答案 0 :(得分:1)
您是否遇到范围问题?怎么样:
<div class="section">
<div data-bind="if: $root.general().Condition1 || $root.general().Condition2">
<!-- ko with: deal -->
<label>Is this a New Client?</label>
<input type=" radio " name="RadioGroup " id="Radio1 " value="true " data-bind="checkedRadioToBool: NewClient" />
<label for="radio1 ">Yes</label>
<input type="radio " name="KSTProcurmentRadio " id="Radio2 " value="false " data-bind="checkedRadioToBool: NewClient " />
<label for="radio2 ">No</label>
<!-- /ko -->
</div>
</div>
答案 1 :(得分:0)
我无法看到“交易”的代码,但是如果“交易”的条件是“交易”。是可观察的,然后您必须将data-bind="if: $root.general().Condition1 || $root.general().Condition2" >
更改为data-bind="if: $root.general().Condition1() || $root.general().Condition2()" >
。
我还注意到你在数据绑定属性的末尾(使用IF)错过了一个结束块引用...