2013-04-22 2 views
0

У меня есть два вида, имеющие свои собственные модели. Один из них содержит только сетку, а другой содержит форму. Я загружаю два из них динамически одновременно.Использование MVVM с картой kendo ui

Вот вид модель моей точки зрения conatining сетки:

$(function() { 

var ticker = $.connection.marketWatch; 
var initializationData = null; // marketWatchData 
function init() { 
    return ticker.server.getAllMarketWatchData().done(function (data) { 

     initializationData = data; 

     $("#marketWatchGrid").data("kendoGrid").dataSource.data(data); 
    }); 
} 

// Add client-side hub methods that the server will call 
$.extend(ticker.client, { 
    updateMarketWatchData: function (marketWatchData) { 
     // do something... 
    } 
}); 

// Start the connection 
$.connection.hub.start() 
    .pipe(init) 
    .done(function() { 
     viewModelMarketRates.data = initializationData; 

     viewModelOrder.updateInstruments(); 
    }); 
}); 

var viewModelMarketRates = kendo.observable({ 
    data: null 
}); 

kendo.bind($("#marketWatchGrid"), viewModelMarketRates); 

И модель вида моего взгляда, содержащей форма:

$(function() { 
var viewModelOrder = kendo.observable({ 
    instruments: viewModelMarketRates.data, 
    selectedInstrument: "EURUSD", 
    amount: "0.1", 
    slActivate: false, 
    sl: "0.0", 
    tpActivate: false, 
    tp: "0.0", 
    buy: function() { 
     //e.preventDefault(); 

     //alert("buy"); 
    }, 
    sell: function() { 
     //e.preventDefault(); 

     //alert("sell"); 
    }, 
    updateInstruments: function() { 
     this.set("instruments", viewModelMarketRates.data); 
     this.set("selectedInstrument", "EURUSD"); 
    } 
}); 

//viewModelOrder.instruments = viewModelMarketRates.data; 
//alert(viewModelOrder.instruments.length); 
kendo.bind($("#orderForm"), viewModelOrder); 
}); 

Как вы видите, я получаю данные оценки рынка в init и сохраняя его в атрибуте данных viewModelMarketRates. Я называю updateInstruments функцию viewModelOrder но в поджигатель я получаю следующее сообщение об ошибке:

ReferenceError: viewModelOrder не определен

viewModelOrder.updateInstruments();

Как предотвратить эту ошибку?

ответ

1
  1. Источник вашей проблемы заключается в том, что ваш viewModelOrder находится в разных пределах, чем готовый документ сетки.
  2. Вы не должны ссылаться на функцию/объекты из нескольких динамически загружаемых представлений, которые загружаются одновременно. Что делать, если кто-то загружается позже другого? Или вообще не загружается?

Самое простое решение Я могу придумать атм: 1. Синхронизировать виды. Загрузить форму после сетки. 2. Перемещение содержимого документа GRID готова к

function grid_ready(){ 
//all that ticker and connections start stuff 
} 

и использовать эту функцию в документе формы готов

$(function(){ 
//create view model etc, 
grid_ready(); 
}); 

редактировать: грамматика.

Смежные вопросы