“;“站点范围”;ViewModel变量
Design pattern for "site wide" ViewModel variables
我正在寻找一种智能设计模式,用于将站点范围的变量加载到项目中多个视图的ViewModel中(以DRY方式)。模糊的问题,一个例子可以澄清事情:
在我的项目中,我有一个局部视图,它显示来自客户端服务器的常规消息和错误消息。消息使用Knockout绑定进行绑定,如下所示:
<p class="message" data-bind="visible: (message.length > 0), text='message'"></p>
这意味着我必须在每个ViewModel中添加相同的代码:
viewModel.message = ko.observable("some message from server or none");
这不是干的!
如何以聪明的方式解决这个问题?对于这种情况,有什么明智的设计模式吗?
我已经知道几个"不太好的选择",所以请继续选择好的选择。:)
您可以使用apply
扩展模型。可以使用其他扩展方法,但这对于Knockout ViewModels来说是简短而充分的。
jsFiddle
A和B都延伸Base。您可以在一个ViewModel上扩展多个类(或接口),任何扩展基的东西都可以获得其基的成员,等等
在这种情况下,我们的基地有一个error
可观测。我们还可以为它提供一些与服务器交互的功能。
function Base(){
var self = this;
self.error = ko.observable('No Error');
}
A
扩展了Base
,并且可以在不定义错误的情况下访问错误
function A(){
var self = this; Base.apply(self, arguments);
self.greeting = ko.observable('Hello');
// Change the error
self.error('A has an error');
}
B
还扩展了Base
,但仅使用HTML中的可观察内容(请参阅fiddle)。
function B(){
var self = this; Base.apply(self, arguments);
self.data = new Date;
}
ko.applyBindings({
a: new A,
b: new B
});
相关文章:
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 将PHP变量传递给jQuery时遇到问题
- 如何通过ajax刷新JSF填充的javascript变量
- 参数变量出现ngTable指令问题
- 通过javascript重定向html传递php变量
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 全局变量和全局对象的属性之间有什么区别吗
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 值对象在某个变量发生更改后发生更改
- Javascript变量赋值|
- AngularJS-在JSON选择器中使用变量名
- Javascript计数器变量未显示正确的值
- delete关键字在全局变量上的不同行为
- 如何在php变量中嵌入JQuery代码
- “;“站点范围”;ViewModel变量
- 如何从ViewModel中观察变量并在HTML中更新它
- 在不使用全局变量的情况下重用knockout.js的viewModel
- 如何将 HTML 添加到此 Knockout.js Viewmodel 变量中