1

在 WinJS 中有三个绑定相关的 mixin:

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

4

1 回答 1

1

你说的对。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和之间有区别mixinobservableMixin只有bind,unbindnotify方法。

于 2013-05-28T03:33:42.500 回答