gpt4 book ai didi

javascript:durandaljs,在 View 模型中应用绑定(bind)

转载 作者:行者123 更新时间:2023-11-29 22:14:54 27 4
gpt4 key购买 nike

我正在尝试使用 durandaljs 制作具有动态内容的单页应用程序。例如,如果您更改设置中的语言,则 UI 会更新。我正在使用 SignalR 从服务器加载对象,除了导航时一切正常。第一次加载 View 时,出现以下错误:

Uncaught Error: Unable to parse bindings.
Message: ReferenceError: router is not defined;
Bindings value: compose: {
model: router.activeItem, //wiring the router
afterCompose: router.afterCompose, //wiring the router
transition:'entrance', //use the 'entrance' transition when switching views
cacheViews:true //telling composition to keep views in the dom, and reuse them (only a good idea with singleton view models)
}

但是如果我重新加载页面, View 就会正确显示。这是 View 模型的示例:

define(function (require) {
var p = require('hubs/myhub'),
rep = require('repositories/myrepository');
var myViewModel = function(data, proxy, cookie) {
var self = this;
self.proxy = proxy;
self.cookie = cookie;
self.Labels = ko.observableArray([]);
try {
self.proxy
.invoke('Setup', self.cookie.Username, self.cookie.Language)
.done(function (res) {
if (res.Result) {
console.log(JSON.stringify(res.Object, null, 4));
self.Labels(res.Object.Labels);
} else {
console.log(res.Error);
}
});
} catch (e) {
console.log(e.message);
}
};
return {
activate: function () {
var cookie = JSON.parse($.cookie(rep.cookieName));
ko.applyBindings(myViewModel({}, p.proxy, cookie), document.getElementById('my_container'));
}
};
});

如果我去掉 activate 函数的 applyBinding,那么导航就没有问题了。会有正确的方法来做到这一点吗?

我修改了返回语句:

return {
myModel: new myViewModel ({ }, p.proxy, JSON.parse($.cookie(rep.cookieName))),
activate: function () {
this.myModel.init();
}
};

并将 signalr 调用包装在 init() 函数中。现在一切正常。

最佳答案

这才是正确的做法! DRandal 为您调用 Ko.applybindings ;) 这意味着 Durandal 负责绑定(bind)!

Hot Towel SPA Durandal Knockout and Dynatree

关于javascript:durandaljs,在 View 模型中应用绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15789386/

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