Angular中的模仿ORM

时间:2016-07-26 02:49:19

标签: angularjs orm

假设我有一个从服务器返回并使用ng-repeat显示的项目列表(即产品),是否有办法将结果中的每个产品“强制转换”或“换行”为自定义Javascript对象,以便我可以在其上调用预定义的方法(类似于服务器端ORM如何获取数据库数据并使用预定义的类包装它们,使属性和方法可用而无需进一步操作)。

即一个简单的例子,假设我有一个Product类:

function Product() {
     this.getTotal = function() {
         return this.price * this.qty;//qty and price are available for each product in products
     }
}

并在路线级别解析产品列表并将其注入角度控制器:

mainApp.controller("viewController", ['$scope', 'products', function ($scope, products) {}

在我的HTML中,我希望能够执行以下操作:

<table>
<tr ng-repeat="product in products">
   <td>{{ product.getTotal() }}</td>
</tr>
</table>

理想情况下,优雅的解决方案看起来像:

<tr ng-repeat="product in products as Product">
   <td>{{ product.getTotal() }}</td>
</tr>

或者

<tr ng-repeat="product in products | castTo:Product">
   <td>{{ product.getTotal() }}</td>
</tr>

显然我可以在接收并将每个实例化为Product的实例时迭代结果,但是我正在寻找Angular的内置解决方案或更优雅的方法,该方法易于阅读并且可以与任何集合一起使用对象。

我目前的想法是创建一个可以做到这一点的过滤器,但在我重新发明轮子之前,我想看看是否有更好的方法。

0 个答案:

没有答案