【发布时间】:2014-11-10 15:05:52
【问题描述】:
我目前正在将 knockoutjs 与我的一个 MVC 应用程序一起使用。 布局模板如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<div class="container-fluid head-content">
<div class="row">
<div class="col-xs-6">
<img class="img-responsive" src="~/Images/logo.jpg" />
</div>
<div class="col-xs-3">
<a class="block" href="#" style="display: none" data-bind="visible: showBack, click: goBack">
<div class="block-text">
<h4>Back</h4>
</div>
</a>
</div>
<div class="col-xs-3">
<a class="block" href="#" style="display: none" data-bind="visible: showHome, click: navigateToHome">
<div class="block-text">
<h4>Home</h4>
</div>
</a>
</div>
</div>
</div>
<div class="container-fluid body-content">
@RenderBody()
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
我的 Index 部分看起来像这样:
@Html.Partial("_Login")
@Html.Partial("_Home")
@Html.Partial("_CutLengths")
@Html.Partial("_MoveStock")
@section scripts {
@Scripts.Render("~/bundles/knockout")
@Scripts.Render("~/bundles/app")
}
我的问题是,根据我所在的页面,我想使用后退按钮转到另一个页面。例如,如果我在 cutLengths 上,我希望后退按钮带我 home。
我的 app.viewmodel.js 有一个如下所示的方法:
// Other operations
self.addViewModel = function (options) {
var viewItem = {},
navigator;
// Add view to AppViewModel.Views enum (for example, app.Views.Home).
self.Views[options.name] = viewItem;
// Add binding member to AppViewModel (for example, app.home);
self[options.bindingMemberName] = ko.computed(function () {
if (self.view() !== viewItem) {
return null;
}
return new options.factory(self, dataModel);
});
if (typeof (options.navigatorFactory) !== "undefined") {
navigator = options.navigatorFactory(self, dataModel);
} else {
navigator = function () {
self.view(viewItem);
};
}
// Add navigation member to AppViewModel (for example, app.NavigateToHome());
self["navigateTo" + options.name] = navigator;
};
我想做的是从 ViewModel 传递一个字符串,我目前正在查看该字符串,当按下后退按钮时会知道将我引导到右侧 ViewModel .
可以这样做吗?
我希望我已经解释清楚了,如果我没有请询问,我会更加努力:D
【问题讨论】:
标签: c# asp.net-mvc mvvm knockout.js