在WinJS中有三个绑定相关的混合器:
WinJS.Binding.mixin和WinJS.Binding.dynamicObservableMixin都定义了相同的混合方法。与其定义之间的唯一区别是,WinJS.Binding.mixin定义为WinJS.Binding命名空间上的不可枚举属性,而WinJS.Binding.dynamicObservableMixin定义为可枚举属性:
WinJS.Namespace.define("WinJS.Binding", {
mixin: { value: dynamicObservableMixin, enumerable: false, writable: true, configurable: true },
dynamicObservableMixin: { value: dynamicObservableMixin, enumerable: true, writable: true, configurable: true },
});我看不出这两个混合体之间有什么真正的区别--我看不出这个属性上可枚举标志的差异有多大关系。在这两种混音中使用的是哪一种,是否存在语义或其他差异?
发布于 2013-05-28 03:33:42
你是正确的。mixin和dynamicObservableMixin之间没有真正的区别。他们是一样的。
WinJS.Binding.mixin添加了addProperty、removeProperty、get/setProperty等方法,这些方法由WinJS.Binding.expandProperties使用。expandProperties用于使现有类可观察。动态属性归因于向对象动态添加属性。
示例:
var MyListViewModel = WinJS.Class.define(
function MyListViewModel_ctor()
{
this._initObservable();
},
{
load: function load()
{
var self = this;
return serviceclient.getMyListData().then(function (records)
{
self.items = new WinJS.Binding.List(records);
});
}
});
WinJS.Class.mix(MyListViewModel,
WinJS.Binding.mixin,
WinJS.Binding.expandProperties({ items: '' }));observableMixin与mixin存在差异。observableMixin只有bind、unbind和notify方法。
https://stackoverflow.com/questions/16778081
复制相似问题