【发布时间】:2015-03-17 22:20:35
【问题描述】:
我正在使用 ASP.NET 和 sammy.js 构建一个单页应用程序,其中除了 Home/Index 视图之外的所有视图都呈现为部分视图,以便 sammy 可以用部分视图交换主体的内容即返回。
我正在使用here 给出的示例,一切正常加载。
与上面的示例类似,在我的主页/索引页面中,我引用了一个名为 routing.js 的脚本,它包装了 sammy 函数调用以解析 MVC 路由:
var Routing = function (appRoot, contentSelector, defaultRoute) {
function getUrlFromHash(hash) {
var url = hash.replace('#/', '');
if (url === appRoot)
url = defaultRoute;
return url;
}
return {
init: function () {
Sammy(contentSelector, function () {
this.get(/\#\/(.*)/, function (context) {
var url = getUrlFromHash(context.path);
context.load(url).swap();
});
}).run('#/');
}
};
}
我需要在内容交换完全完成后调用回调函数,以便在新呈现的内容上实现进一步的 jQuery 功能。我的困境是,无论我从 sammy.js 文档中尝试什么选项,在交换内容后似乎都没有运行回调。
我已经尝试了以下所有方法(根据 sammy.js 文档传递回调的所有“有效”方式):
content.load(url).swap(pageLoadScripts(url));
content.load(url).swap().onComplete(pageLoadScripts(url));
content.load(url).swap().then(pageLoadScripts(url));
content.load(url).swap().next(pageLoadScripts(url));
content.load(url,pageLoadScripts(url)).swap();
甚至
content.load(url).swap();
pageLoadScripts(url);
在任何情况下,pageLoadScripts 函数都会在内容被交换之前触发。有什么不同的想法或建议吗?
【问题讨论】:
-
你有没有为这个问题找到合适的解决方案?有同样的问题。
标签: asp.net-mvc sammy.js