Как я могу наблюдать свойство, а не объект, на который оно указывает, с помощью WinJS?

#windows-8 #windows-store-apps #winjs

#windows-8 #windows-магазин-приложения #winjs

Вопрос:

Надеюсь, я правильно это описываю. Я создаю приложение для магазина Windows, и у меня есть следующие настройки

 WinJS.Namespace.define("Model",
    {
        WorkOrders: new WinJS.Binding.List(),
        selectedWorkOrder: {}
    });
WinJS.Namespace.define("ViewModel",
    {
        WorkOrders: Model.WorkOrders,
        selectedWorkOrder: Model.selectedWorkOrder
    })
  

При загрузке страницы ajax-запрос заполняет список рабочих порядков, после их заполнения пользователь может выбрать один, после чего Model.selectedWorkOrder устанавливается на один из объектов в Model.Порядок работы.

Я хочу, чтобы ViewModel.selectedWorkOrder отражал любую модель.selectedWorkOrder , но, похоже, он привязывается только к изначально пустому объекту, как я могу привязать его к этому свойству (даже если объект изменяется, например, указатель).

Я делаю что-то подобное, чтобы установить selectedWorkOrder

 Model.selectedWorkOrder = results[i];
  

Спасибо!

Ответ №1:

Не уверен, правильно ли я понимаю ваш вопрос.

То, что вы ищете, — это какое-то событие, чтобы попасть в ViewModel.selectedWorkOrder то, что Model.selectedWorkOrder есть, верно?
Если это так, вы могли бы попробовать RxJS-WinJS (с которым я, честно говоря, не слишком знаком), или вы могли бы просто создать ViewModel.selectedWorkOrder метод, который получает и возвращает все, что Model.selectedWorkOrder есть в любой момент времени.

Что-то вроде этого:

 WinJS.Namespace.define("Model",
{
    WorkOrders: new WinJS.Binding.List(),
    selectedWorkOrder: {}
});

var _getWorkItem = function(){
    return Model.selectedWorkItem;
}
WinJS.Namespace.define("ViewModel",
{
    WorkOrders: Model.WorkOrders,
    selectedWorkOrder: _getWorkItem
})