希望有人对 Breeze 的扩展实体有更好的了解,因为我很难过!因此,我在服务器端(使用 Breeze 的 API 的 Web API)创建了一个部分类 (WO_Rout),并创建了一个名为“AssetJobEqNo”的属性。
我在这里阅读并遵循了 Breeze 的文档,但无济于事。按照指南,我为这个特定的实体“WO_Rout”创建了一个构造函数,如下所示:
var assets = function () {
this.AssetJobEqNo = '';
};
var serviceName = 'cms8/workorders';
var manager = new breeze.EntityManager({
serviceName: serviceName
});
var store = manager.metadataStore;
store.registerEntityTypeCtor('WO_Rout', assets);
当我查询我的控制器时,这个特定的属性“AssetJobEqNo”被发送并在客户端的 JSON 原始结果中看到。
所以....这是我无法弄清楚的奇怪部分。如果我运行与 UI 上的按钮相关联的查询,则该属性已加载并在我分配的对象中,但它仍然是空字符串的默认值,它永远不会加载。然后我再次运行完全相同的查询,获取相同的实体,这次值就在那里。
总之,我很困惑为什么这个扩展实体的属性没有被第一个查询填充,但是如果我运行完全相同的查询,它会第二次加载?
希望这一切都有意义。
数据服务功能:
function getWorkOrder(reqNo) {
if (reqNo > 0) {
var query = breeze.EntityQuery.from("GetWorkOrders");
query = query.where("req_no", "==", reqNo)
.expand(["WO_RtHelp.WO_Rout", "WO_RtHelp.WO_Rout.eqptmast", "WO_RtHelp.WO_Act.WO_Resources.persmast", "WO_RtHelp.WO_Act.WO_Resources.Kits", "WO_RtHelp.WO_Act.Activity", "WO_RtHelp.WO_Act.WO_Resources.customer", "WO_RtHelp.WO_Act.WO_Resources.eqptmast", "WO_RtHelp.WO_Act.WO_Resources.invsite.invmast", "WO_RtHelp.WO_Act.WO_Resources.crew"])
return manager.executeQuery(query);
} else {
return throwNotification('Please enter a Work Order number.');
}
}
成功查询的控制器功能
function querySucceeded(data) {
$scope.WorkOrder = {};
if (data.results.length === 0) {
sysErrorNotification('No Work Order with System #' + $scope.workOrderSearchNumber);
}
else {
$scope.WorkOrder = data.results[0];
$scope.myData = $scope.WorkOrder.WO_RtHelp;
$('#bottomNav a[href="/WorkOrders/#woMain"]').tab('show');
resetDataSources();
$scope.$apply();
}
}
我正在使用 Breeze、Angular、Q 和 jQuery