【发布时间】:2015-06-25 10:24:00
【问题描述】:
我是网络新手,尤其是单页应用程序。
我有一个主菜单,我在其中调用程序 HomePage 加载 Div class="PhotoStack" 并创建 ViewModel ScatteredGallaryMVVM:
function HomePage() {
$.ajax({
url: "/Home/Home",
type: "GET",
cache: false
})
.done(function (data, textStatus, jqXHR) {
var contentObject = $(data)[0];
$(".MainContent").empty();
$(".MainContent").append(contentObject);
if (!window.hasOwnProperty("scatteredGallaryMVVM")) {
window.scatteredGallaryMVVM = new ScatteredGallaryMVVM();
ko.applyBindings(window.scatteredGallaryMVVM, $(".MainContent")[0]);
}
window.scatteredGallaryMVVM.FillGallary();
})
.fail(function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.status);
});
function ScatteredGallaryMVVM() {
var self = this;
self.Products = ko.observableArray();
self.FillGallary = function () {
$.ajax({
url: '/Products/GetProducts',
type: 'GET',
dataType: 'json'
})
.done(function (data, textStatus, jqXHR) {
self.Products(data);
})
.fail(function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.status);
});
};
<div class="PhotoStack" data-bind="foreach: Products">
<figure class="PhotoStackFigure">
<a class="PhotoStackHyperlink">
<img class="PhotoStackImage" data-bind="attr: { src: ImageUrl }"></img>
</a>
<figcaption>
<p data-bind="text: Object.Name"/>
</figcaption>
</figure>
</div>
索引主页
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/Site")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/knockout")
</head>
<body>
<div class="MainCanvas">
@Html.Partial("~/Views/Index/MainMenu.cshtml")
<div class="MainContent">
</div>
</div>
</body>
</html>
当我第一次调用HomePage 时,它运行良好。但是当我再次调用HomePage 时它不起作用(尽管我从服务器获得了 8 个对象,但 div 有 1 个没有任何数据的数字)。
PS:对不起我的英语。
【问题讨论】:
标签: javascript html asp.net-mvc knockout.js single-page-application