【发布时间】:2017-09-02 16:05:15
【问题描述】:
首先,我是 Knockout 的新手。有了一些基本的了解。我正在使用 Crossroad 进行路由
这是当前的情况。我从 URL 中获取值作为 param.route().plan。效果不错
然后将 Value 设置为视图模型中的 Observable。但是,当我从上一个使用 location.href = "checkout/gold" 导航到此路线时,绑定不起作用/值不会更新,其中黄金是计划。但是,如果我重新加载页面,它确实可以正常工作。
PS : View 模型按预期工作。我用 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);
查看
<span data-bind="text:selectedPlan()></span>
【问题讨论】:
-
self指的是什么?我猜你必须使用self.selectedPlan.subscribe(function(plan){ ... location.href = "#checkout/" + plan; ... }) -
var self = this
-
您不能在父对象上应用订阅功能。您必须为每个可观察值手动创建单独的订阅函数,您需要观看
标签: javascript knockout.js crossroadsjs