WinJS.Binding.mixin和WinJS.Binding.dynamicObservableMixin有什么区别?

时间:2013-05-27 17:40:37

标签: windows-8 winjs mixins

在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之间有任何真正的区别 - 我没有看到这个属性上可枚举标志的差异的相关性。关于两者中哪个混合使用是否有任何语义或其他差异?

1 个答案:

答案 0 :(得分:1)

你是对的。 mixindynamicObservableMixin之间没有真正的区别。他们是一样的。

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: '' }));

observableMixinmixin之间存在差异。 observableMixin只有bindunbindnotify方法。