如何在保存之前刷新实体,使用 angular-wakanda API

How to refresh an entity before it is saved, with angular-wakanda API

之前我们有一个serverRefresh()方法来刷新实体,用WAF。它触发 init 事件服务器端。

我现在看不出有什么方法可以使用 angular-wakanda 连接器来做到这一点。

我是不是漏掉了什么?

如何在使用 Angular-Wakanda 连接器保存新创建的实体之前初始化一些数据?

你应该在你的实体上使用 $fetch() 方法,它会获取它并更新它的所有属性,然后应用你的修改并调用 $save()。

另请参阅: angular-wakanda doc

从现在开始,$serverRefresh() 是一个弃用的功能,并且肯定会在下一个 1.1.0 版本中从 Angular-Wakanda 连接器中删除。 你可以在你的实体上使用 $fetch() 方法,它会再次获取它并更新它的所有属性。然后应用您的修改并调用 $save()。 对于新创建的实体,您可以按照以下步骤进行:

            var newProduct = ds.Product.$create();
            newProduct.productName = "myProductName";
            newProduct.price = 5.5;
            newProduct.$save();

而这个 $save() 触发了事件 init()。

版本 1.1.0 及更高版本(自 2016 年 5 月 11 日起)

对于 1.1.0 及更高版本,您必须使用 $recompute() 方法,它与旧的(见下文)$serverRefresh() 方法做同样的事情。

您可以在 Angular-Wakanda Entity API Reference 上找到它的文档。

版本 <1.1.0

当前 版本 (1.0.4) 的 Angular-Wakanda 上,您仍然 可以通过调用$serverRefresh() 在您的实体上。

var entity = ds.Product.$create();
entity.$serverRefresh().$promise.then(function () {
  //Your entity is updated with calculated attributes filled, and right events executed
});

$serverRefresh() 的作用如下:

  • 在新创建的属性(尚未保存)上,它将触发 init 然后 clientrefresh 服务器端事件,然后更新客户端实体
  • 在已保存的实体上,它将触发 clientrefresh 事件服务器端,然后更新客户端实体

确实,它已被弃用并将被删除。但是,它将在 1.1.0 版本中被另一个具有相同行为的、有据可查且明确的方法所取代。