![](/img/trans.png)
[英]breeze.js : how do I exclude tables/entities from breeze metadata collection?
[英]How do I automate extending Knockout observables from entities returned by Breeze query?
我正在使用Konckout,Breeze JS,Durandal JS,ASP.NET Web API,但我的问题仅针对Breeze和Knockout。
如何从Breeze查询返回的实体中自动扩展Knockout观测值?
我有一个通过Breeze返回的客户列表,他们有我想使其呈现的数据库特定字段。 我特别想要:
根据我的阅读( 如果我错了 , 请告诉我 ),实现此目的的方法不再是使用自定义绑定,而是使用.extend()
函数扩展KO可观察.extend()
。
我的dataservice.js具有以下Breeze查询,该查询接受可观察的并将其设置为数据结果。
// -- snip --
function getCustomers(koCustomers) {
var query = breeze.EntityQuery
.from('Customers');
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
koCustomers([]);
koCustomers(data.results);
}
}
// -- snip --
供参考的也是我的观点
define(['durandal/app',
'durandal/system',
'durandal/plugins/router',
'services/config',
'services/logger',
'services/datacontext'],
function (app, system, router, config, logger, datacontext) {
'use strict';
var customers = ko.observableArray();
var viewModel = {
title: 'Vehicles',
activate: activate,
customers: customers
};
return viewModel;
function activate() {
return datacontext.getCustomers(customers);
}
});
我在想我需要某种映射函数,该函数将接受observable和data.results,然后循环遍历每个结果并将其扩展...任何示例将不胜感激...
如果只是格式化,那么自定义绑定将更简单且更易于维护。 如果您需要扩展模型,那么当您从服务器获取模型时,只需应用转换,以便每个实体都拥有您所需要的。 例如:
var entities = getEntitiesFromTheServer();
$.each(entities, function(i, entity){
entity.formattedCurrency = ko.computed(function (){
return '$' + entity.amount;
});
});
这样,您可以绑定它:
<span data-bind="text: formattedCurrency"></span>
push()也可以用于扩展observableArray
像这样:
function getCustomers(koCustomers) {
var query = breeze.EntityQuery
.from('Customers');
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
koCustomers([]);
var temp =ko.observable();
var p =ko.observableArray();
p(data.results).
var len= p().length();
var i;
for(i=0; i<len; i++)
{
temp(p()[i].amount())
var q=ko.computed(function(){
return {amount: '$' + temp()} ;
koCustomer().push(q);
});
}
}
}
对于日期格式,请使用dateString的自定义绑定
链接: http : //www.aaronkjackson.com/2012/04/formatting-dates-with-knockoutjs/
希望对你有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.