2013-08-08 2 views
0

Я использую amplify.js с Knockout.js, и я хочу хранить данные локально. Я попытался использовать этот код: amplify guide , но он не работает для меня.amplify.js - amplify.store не хранить данные

мой взгляд модель

define(['services/datacontext'], function (dataContext) { 

    var store = amplify.store("offlineData"); // Why is agency undefined after retrieving from the store?!?!?! 

    var agency = ko.observableArray([]); 
    var initialized = false; 

    var save = function (agency) { 
     return dataContext.saveChanges(agency); 
    }; 

    var vm = { // This is my view model, my functions are bound to it. 
     //These are wired up to my agency view 
     activate: activate, 
     agency: agency, 
     title: 'agency', 
     refresh: refresh, // call refresh function which calls get Agencies 
     save: save 
    }; 
    return vm; 

    function activate() { 
     if (initialized) { 
      return; 
     } 

     initialized = true; 

     if (initialized == true) { 
      amplify.store("offlineData", vm.agency); 
     } 

     return refresh(); 

    } 

    function refresh() { 
     return dataContext.getAgency(agency); 
    } 
}); 

После обновления извлекает данные, я сохранить эти данные в локальном хранилище. Поэтому, когда я делаю другой запрос для этой страницы. Я бы ожидал, что var store будет содержать эти данные, но он не определен.

Кто-нибудь знает, как использовать усиление?

ответ

1
amplify.store("offlineData", vm.agency); 

vm.agency является функцией, поэтому вам нужно вызвать его, чтобы получить его значение

amplify.store("offlineData", vm.agency()); 
+0

Да, вы, вероятно, правы. Я предпочитаю использовать утилиту Knockout 'ko.util.unwrapObservable (vm.agency)', или 'newer' 'ko.unwrap (vm.agency)', читает более приятную IMO - делает ее более явной - а также если вы когда-либо изменить вещи, чтобы быть ненаблюдаемыми (маловероятно), тогда он не сломает код. – jamiebarrow

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