Javascript 敲除JS-可观察不';t在加载时更新视图

Javascript 敲除JS-可观察不';t在加载时更新视图,javascript,knockout.js,crossroadsjs,Javascript,Knockout.js,Crossroadsjs,首先,我是一个新手。有一些基本的了解。我用十字路口选路 这是目前的情况。我从URL获取的值为param.route().plan。它确实很好用 然后将该值设置为视图模型中的可观察值。但是,当我使用location.href=“checkout/gold”从上一个位置导航到此路线时,绑定不起作用/值不更新,其中gold是计划。但如果我重新加载页面,它确实可以正常工作 PS:视图模型确实按预期工作。我用console.log进行了双重确认 现在有一些代码函数重定向到有问题的视图模型 // Funct

首先,我是一个新手。有一些基本的了解。我用十字路口选路

这是目前的情况。我从URL获取的值为param.route().plan。它确实很好用

然后将该值设置为视图模型中的可观察值。但是,当我使用location.href=“checkout/gold”从上一个位置导航到此路线时,绑定不起作用/值不更新,其中gold是计划。但如果我重新加载页面,它确实可以正常工作

PS:视图模型确实按预期工作。我用console.log进行了双重确认

现在有一些代码函数重定向到有问题的视图模型

// Function Handling Subsription
        self.subscribe = function () {
            alert(self.selectedPlan());
            var currentUser = Parse.User.current();
            if (currentUser === null) {
                $('#loginBox').modal('show');
            } else { // Else redirect
                location.href = '#checkout/'+self.selectedPlan();
                // Redirect to Checkout page
            }
        } // Function ends here
看起来有效的视图模型

self.selectedPlan = ko.observable(params.route().plan);
看法


好的,我知道答案了。也许会帮助别人

在这种情况下,使用计算的可观测值。这保证了在这种情况下具有约束力

var self = this;

    self.firstName = ko.observable('Bob');
    self.lastName = ko.observable('Smith');
    self.fullName = ko.computed(function() {
        return self.firstName() + " " + self.lastName();
    });

他们的文档非常前卫

self
指的是什么?我猜您必须使用
self.selectedPlan.subscribe(函数(plan){…location.href=“#checkout/”+plan;…})
var self=this您不能对父对象应用订阅函数。您必须手动为每个可观察值创建单独的订阅函数,您需要观察
firstName
lastName
fullName
与您的问题有什么关系?使用crossroad.js的人怎么会觉得这有帮助呢?我只是举了一个例子。问题与Crossroads无关,而是与Observable类型有关。但是如果您解决了这个问题,为什么不简单地发布代码呢?这就是这个网站的工作原理。答案一定与问题有关。这个答案是没有用的,如果其他人发布了它,你可能会自己投否决票。
var self = this;

    self.firstName = ko.observable('Bob');
    self.lastName = ko.observable('Smith');
    self.fullName = ko.computed(function() {
        return self.firstName() + " " + self.lastName();
    });