javascript - 在 SPA 中保持元素加载基于 knockout 的 View

标签 javascript jquery jquery-ui knockout.js sammy.js

我在使用当前的 Knockout.js viewModel 结构加载元素时遇到问题。我正在使用 Sammy.js 将 URL 映射到 View 和 jqueryUI,以便向网站添加一些动画。我加载“正常”元素没有问题,但在这个应用程序中我需要使用图形和图表。我正在使用 Chartist.js 和 JustGage.js。另外我应该注意,我使用 Parse 作为数据库。

问题是,当交换 View 时,仪表和图表在进入 View 之前不会加载,本质上“破坏”了动画体验。当首先加载 View 时,内容会被正确加载。我是否需要使用某种自定义绑定(bind),或者如何修复此问题,以便在网络应用程序上查看之前正确加载图表和仪表。我已将代码加载到 JSFiddle here.

我创建了一个变量startView,以便可以轻松更改首先加载的 View 。

我的KO绑定(bind)如下:

var View = function (title, templateName, data) {
    var self = this;
    this.title = title;
    this.templateName = templateName;
    this.data = data;
};

var dashboardView = {
    //ko.observables here...
};

//viewModel which consists of multiple subviews
var viewModel = {
    views: ko.observableArray([
    new View("Dashboard", "dashboard", dashboardView),
    selectedView: ko.observable()        
};
//Apply knockout bindings
ko.applyBindings(viewModel);

最佳答案

我已经找到解决问题的办法了。但并不完美。如果我找到更好的方法,我会更新答案。它不会在动画之后立即加载。可以看到结果here.基本上只是添加了来自 knockout 绑定(bind)处理程序的回调,用于初始化聊天和仪表。

if (next === "dashboard") {
    transition.left($element, getTemps);
} else if (next === "temperaturehistory") {
    transition.left($element, getTemps);
}
else {
    transition.left($element);
}

关于javascript - 在 SPA 中保持元素加载基于 knockout 的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26964692/

相关文章:

jquery $(this) 在 CoffeeScript /主干中不起作用

jQuery UI 未加载

javascript - 自定义javascript确认对话框

javascript - 将字符串数组排序为对象数组

javascript - 使用 JQUERY 和 Ajax 获取祈祷时间 JSON 数据

java - 在数据库的 <div> 标签中显示换行符

c# - 编写异步 Controller 并更新进度

javascript - JQueryUI Draggable "Object doesn' t 支持此属性或方法"当包含 jquery-ui 时

javascript - 自动完成:在最后一项上按向下箭头键后如何专注于第一项?

javascript - 覆盖 Chrome 中的功能键默认操作