我试图在foreach绑定中获得if条件,但它对我不起作用。以下是我尝试过的代码:
查看
<div class="section-wrap break" id="ServicePlan_PrioritySection" data-bind="foreach:applicationView.ViewModel.AllPersonal">
<div data-bind="if:IsValidServicePlan(applicationView.ViewModel.AllPersonal[0], false)">
@{Html.RenderPartial("~/Views/Home/ServicePlan/_Priority1.cshtml");}
</div>
调用的函数
function IsValidServicePlan(priority, checkDetailFlag) {
var upActivityTempArr = ko.observableArray([]);
ko.utils.arrayForEach(priority.UpcomingActivities(), function (activity) {
if (activity != undefined)
if (!IsValidActivity(activity))
upActivityTempArr.push(activity); // push valid Activity
});
ko.utils.arrayForEach(upActivityTempArr(), function (activity) {
if (activity != undefined)
priority.UpcomingActivities.remove(activity); // push valid Activity
});
if (hasValue(priority.Detail())
|| hasValue(priority.TimeFrames())
|| hasValue(priority.Feedback.SatisfactionLevel()) && priority.Feedback.SatisfactionLevel() != Satisfaction_Level
|| hasValue(priority.Feedback.FeedbackComment()) && priority.Feedback.FeedbackComment() != "Add Comment"
) {
return true;
}}
当从if条件调用该函数时,优先级参数将以未定义的形式出现。我的要求是当foreach循环运行时,它将检查并仅为那些值为空的那些渲染部分视图。我将如何解决这个问题才能解决这个问题?
非常感谢提前。
答案 0 :(得分:1)
Scope Issue
当您尝试在不存在的子级别访问applicationView.ViewModel.AllPersonal[0]
时,$parent
&amp; root
级别。
您可以使用引用$data
的{{1}}在视图中缩短您的约束力,而不是在视图中使用更广泛的方式current context
查看:强>
($parent.applicationView.ViewModel.AllPersonal[0])
作为适当的替代品,您在视图中使用<div class="section-wrap break" id="ServicePlan_PrioritySection" data-bind="foreach:applicationView.ViewModel.AllPersonal">
<div data-bind="if:IsValidServicePlan($data,false)">
@{Html.RenderPartial("~/Views/Home/ServicePlan/_Priority1.cshtml");}
</div>
或.bind
语法(如评论中所述)