【发布时间】:2016-10-26 12:50:00
【问题描述】:
我正在使用 Knockout.JS 进行代码挑战。到目前为止它非常整洁。
如果有人可以帮助我,我有几个关于最佳实践的简单问题。我试图想象大规模使用这个库会是什么样子,但这很困难。
在声明视图模型时,通常最好只在模型中声明可观察对象,然后再添加实用程序函数?还是应该同时声明视图模型不可或缺的函数?
所以:
var viewModel = {
newItemName: ko.observable(),
newItemPrice: ko.observable(0),
newItemQuantity: ko.observable(1)
};
viewModel.incrementUp = function() {
var value = this.quantity() + 1;
this.quantity(value);
};
// more functions here
ko.applyBindings(viewModel);
相反。这个:
var viewModel = {
newItemName: ko.observable(),
newItemPrice: ko.observable(0),
newItemQuantity: ko.observable(1),
addNewItem: function () {
var newItem = {
name: capitalizeFirst(this.newItemName()),
price: this.newItemPrice(),
quantity: ko.observable(this.newItemQuantity())
};
}
};
viewModel.something = ko.computed(function() {
return 'do stuff'
});
ko.applyBindings(viewModel);
或者人们通常只是在之后添加计算值?我不知道人们是否会喜欢单一的 viewModel 文字,或者是否有一个标准来解决这个问题。我已经习惯了 Angular 拥有“Angular 方式”来做所有事情,哈哈。
很抱歉这么迂腐。正如我所说,这是一个代码挑战,我想给人留下深刻印象……另外,我发现很难找到 Knockout 应用程序的示例。
谢谢!
【问题讨论】:
-
你看过这部分文档吗?:knockoutjs.com/documentation/…
-
如果你想给人留下深刻印象,请使用 ES2015,例如现代 Javascript。 Babel 将为您完成转译。你可以摆脱 self = this。
-
顺便说一句,我的答案的“PS”仍然适用,我认为您根本无法使用选项二(“对”选项)。 IE。选项 2 不是一个选项。 (如果你可以让它工作,请修改你的问题并联系我,以便我可以相应地调整我的答案。)
标签: javascript mvvm knockout.js