gpt4 book ai didi

javascript - knockout : Change observable value

转载 作者:行者123 更新时间:2023-11-30 11:29:24 25 4
gpt4 key购买 nike

我使用 requirejs/crossroads 设置。

这是我使用一些全局属性进行的引导:

ko.applyBindings({
route: router.currentRoute,
user: {
...
},
...
loading: ko.observable(false),
setLoadingState: function(newState) {
this.loading(newState);
}
});

当从组件调用 setLoadingState 函数时(通过参数传递),它告诉我 loading 不是函数/undefined

实现此类机制的正确方法是什么?

最佳答案

请注意,在您的(简化的?)示例中,您不需要额外的方法,因为它只转发到可以直接调用的loading


要么使用类似模式的类来确保 this 像这样引用您的 View 模型:

var MyApp = function(router) {
this.route = router.currentRoute,
this.loading = ko.observable(false);
};

MyApp.prototype.setLoadingState = function(newState) {
this.loading(newState);
};


ko.applyBindings(new MyApp(router));

(您还可以使用更现代的 class 语法)

或者,通过“工厂”功能使用普通对象:

var MyApp = function(router) {
var route = router.currentRoute,
var loading = ko.observable(false);
var setLoadingState = function(newState) {
loading(newState);
};

// Expose what you want to expose:
return {
loading: loading,
setLoadingState: setLoadingState
};
};

ko.applyBindings(MyApp(router));

关于javascript - knockout : Change observable value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46812434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com