为什么简单的knockout.js无限加载默认视图?

时间:2012-03-31 09:12:45

标签: knockout.js

组合一个非常简单的Knockout.js exmaple来了解它是如何工作的。

我立即意识到它无限加载并导致浏览器执行堆栈溢出。基本上,它运行默认的runRoute并且不会停止!

您可以使用调试器完全见证和检查的jsFiddle:http://jsfiddle.net/hn5JS/

基本代码:

function AlloyViewModel() {
    // Data
    var self = this;
    self.appViews = ['Dashboard', 'Engine', 'Map', 'Jobs', 'Clients', 'Users'];
    self.currentAppView = ko.observable();

    // Behaviours
    self.goToAppView = function(appView) { 
        location.hash = '/' + appView;
    };

    // Client-side routes    
    Sammy(function() {
        this.get('#/:folder', function() {
            self.currentAppView(this.params.appView);
        });
        this.get('', function() { this.app.runRoute('get', '#Dashboard') });
    }).run();

};

ko.applyBindings(new AlloyViewModel());

这是sammy.js或我自己的代码的问题吗?我需要使用不同版本的jQuery吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

能够找出解决方案。通过将ko.applyBindings(new AlloyViewModel());包装在jQuery document.ready函数中,它已成功执行。当DOM未完全加载时,看起来它存在数据绑定问题。