【发布时间】:2016-01-18 17:23:10
【问题描述】:
我正在尝试在 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 循环运行时,它只会检查和渲染那些值不为空的部分视图。我将如何解决这个问题才能解决这个问题?
非常感谢。
【问题讨论】:
-
试试这个
IsValidServicePlan.bind($data,applicationView.ViewModel.AllPersonal[0], false)希望有帮助 -
或者你可以使用
function(){IsValidServicePlan(applicationView.ViewModel.AllPersonal[0], false)}欢呼 -
当我使用上述语句时它不起作用。
-
这两个语句都不起作用你的意思是说?如果是这样的话,你能检查一下你是否真的在
applicationView.ViewModel.AllPersonal[0]中获取数据 -
是的,我正在获取数据:但是,我将代码用作@{Html.RenderPartial("~/Views/Home/ServicePlan/_Priority1.cshtml") ;}
标签: jquery asp.net-mvc-4 knockout.js