由于AngularJS是MVC,似乎每个持有数据或逻辑的对象都是模型。但是对象没有限制范围呢?哪些发送到服务器并直接持久存入数据库?
我正在将我的应用程序的整个业务逻辑从Web服务器(c#)移动到客户端,因为如果我已经有很多javascript代码,将它保留在服务器上是没有意义的。
我的服务器端只是一个瘦的web api,而不仅仅是DB的实体框架。
现在我问自己应该如何对待/命名我没有绑定到UI的对象,但是用来计算我从UI获得的东西。
angularjs在某种程度上有帮助吗?像命名惯例等...?
更新详情
由于Angularjs是一个MVC框架,我应该使用viewmodels来使用已经模型的MVC吗?
答案 0 :(得分:1)
Angular"模型不可知"因为它并没有强迫你使用任何模型实现。您可以在示波器上放置任何内容并将模板和输入绑定到它。这是一件好事,因为它可以让你选择像Restangular或persistence.js这样的模型实现。
因此,由于Angular并不真正关心,所以一切都取决于你。 Angular并没有帮助你,但它也不会妨碍你。
我们对项目使用persistence.js,并且它运行良好。 Angular不知道并且不关心我们使用它,但它的效果非常好。但是我们不会将persistence.js模型直接放在作用域上,而是创建特殊的视图模型。因此,我们项目中的一些典型代码如下所示:
var customer = new model.Customer();
$scope.customer = customer.toViewModel();
$scope.save = function() {
var customer = $scope.customer.toModel();
persistence.add(customer);
persistence.flush();
};
我们已经扩展了persistence.js以添加toViewModel()
和toModel()
方法,这些方法基本上只接受所有属性并将它们复制到匿名对象,然后再返回。
我们没有将模型直接放在范围上的原因是因为当调用persistence.flush()时,persistence.js刷新所有模型的所有更改,如果我们直接绑定到模型,则会有一些更改用户不想保存可能会被保存。另一个原因是你永远不希望你的真实模型处于不正确的状态,但是它对于视图模型处于不正确的状态是有用的。当用户完成时,由用户来解决。
所以我不确定我是否回答了你的问题,但这取决于你。找到您喜欢的模型库,或创建符合您需求的模型库。
答案 1 :(得分:0)