【问题标题】:amplify.js - amplify.store not storing dataamplify.js - amplify.store 不存储数据
【发布时间】:2013-08-08 11:47:24
【问题描述】:

我正在使用带有 Knockout.js 的 amplify.js,我想在本地存储数据。我尝试使用此代码:amplify guide 但它对我不起作用。

我的视图模型

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 包含这些数据,但它是未定义的。

有人知道如何使用放大吗?

【问题讨论】:

    标签: javascript mvvm amplifyjs


    【解决方案1】:
    amplify.store("offlineData", vm.agency);
    

    vm.agency 是一个函数,因此你需要调用它来获取它的值

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

    【讨论】:

    • 是的,你可能是对的。我更喜欢使用 Knockout 实用程序 ko.util.unwrapObservable(vm.agency) 或“较新”的 ko.unwrap(vm.agency),IMO 读起来更好 - 使其更明确 - 而且如果您将事物更改为不可观察(虽然不太可能),那么它不会破解密码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 2012-09-12
    相关资源
    最近更新 更多