首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Breeze js非EF hasServerMetadata

Breeze js非EF hasServerMetadata
EN

Stack Overflow用户
提问于 2012-12-20 13:14:29
回答 1查看 1.2K关注 0票数 0

我在Asp.Net WebAPI中使用Breeze.js运行以下代码。我可以使用OData协议查询我的服务,并且可以在响应中看到JSON数据,但是.then()和.fail()回调不会触发,因此视图模型永远不会获得数据。是不是因为我缺少元数据?

代码语言:javascript
复制
/// <reference path="..\breeze.debug.js" />

(function (root) {
    var dataService = new breeze.DataService({
        serviceName: 'api/breezesample',
        hasServerMetadata: false
    });

    var altMs = new breeze.MetadataStore({
        namingConvention: breeze.NamingConvention.camelCase
    });

    var manager = new breeze.EntityManager({
        dataService: dataService,
        metadataStore: altMs
    });

    // define the viewmodel
    var vm = {
        todos: ko.observableArray(),
        includeDone: ko.observable(false),
        show: ko.observable(false)
    };

    // start fetching Todos
    getTodos();

    // re-query when "includeDone" checkbox changes
    //vm.includeDone.subscribe(getTodos);

    // bind view to the viewmodel
    ko.applyBindings(vm);

    /* Private functions */

    // get Todos asynchronously
    // returning a promise to wait for     
    function getTodos() {

        var query = breeze.entityModel.EntityQuery.from("todos");

        if (!vm.includeDone()) {
            query = query.where("IsDone", "==", false);
        }

        return manager
            .executeQuery(query)
            .then(querySucceeded)
            .fail(queryFailed);
    };

    function querySucceeded(data) {
        vm.todos.removeAll();

        var todos = data.results;
        todos.forEach(function (todo) {
            vm.todos.push(todo);
        });

        vm.show(true); // show the view
    }

    function queryFailed(error) {
        alert("Query failed: " + error.message);
    }

}(window));
EN

回答 1

Stack Overflow用户

发布于 2012-12-20 14:53:37

试试这段代码。您还需要通过addEntityType方法调用将元数据添加到“altMs”中。请确保您也获得了最新版本的breeze,v.0.78.x。不再需要代码中的“breeze.entityModel”。

代码语言:javascript
复制
var DataService   = breeze.DataService;
var MetadataStore = breeze.MetadataStore;
var EntityManager = breeze.EntityManager;

var dataService = new DataService({
    serviceName: altServiceName,
    hasServerMetadata: false
});

var altMs = new MetadataStore({
    namingConvention: NamingConvention.camelCase
});

return new EntityManager({
    dataService: dataService,
    metadataStore: altMs
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13965741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档