在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 },
});
我没有看到这两个mixin之间有任何真正的区别 - 我没有看到这个属性上可枚举标志的差异的相关性。关于两者中哪个混合使用是否有任何语义或其他差异?
答案 0 :(得分:1)
你是对的。 mixin
和dynamicObservableMixin
之间没有真正的区别。他们是一样的。
WinJS.Binding.mixin
添加了WinJS.Binding.expandProperties
使用的addProperty,removeProperty,get / setProperty等方法。 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
方法。