-1

我正在使用 angular-js,并且正在寻找一种方法来为我的数据建模。我受到 Backbone 的启发,开始写一些类似于 Backbone 模型的东西。在 Backbone 模型中,有 get() 和 set() 方法用于访问模型的成员。
使用 get() 和 set() 方法比使用 model.attributes 有什么优势。_ _?
如果我不需要我的角度模型来触发更改事件,是否值得创建类似于 Backbone.Model 的 get() 和 set() 的 get() 和 set() 方法?

编辑
为了更清楚,我问是否有优势使 set() 和 get() 方法优于直接访问字段。如果没有任何优势,为什么Backbone的人决定走那条路?

4

3 回答 3

3

您只需要创建一个保存数据的服务,您可以将服务视为模型或集合的实例。例如,您有一些领域类,例如Book,您可以做的是创建一个服务“BookListService”,该服务将负责 CRUD 和/或业务逻辑。

像这样的东西

function Book(title, author){
   this.title = title;
   this.author = author;
   this.isRead = false;
}

Book.prototype.markAsRead = function(){
   this.isRead = true
}



angular.module('someModule', []).factory('BookListService', function($http){
   var service {
         books: [],
         load: function(){
             $http.get('/books').then(function(res){
                 angular.forEach(res.data, function(book){
                     service.books.push(new Book(book.title, book.author))
                 })
             })
         }
    };
    return service; 
})
于 2013-07-13T09:19:15.853 回答
1

Angular 的“模型”是 javascript 中的任何对象。

如果您查看 angularjs.org 上的教程,

http://jsfiddle.net/api/post/library/pure/

数据在 Controller 中定义。所以做一个数组,就做

$scope.todos = [
    {text:'learn angular', done:true},
    {text:'build an angular app', done:false}];

获取/设置只是普通的 javascript:

获取长度:$scope.todos.length;

设置为空:$scope.todos = [];

在视图(html)中,如果变量在同一个控制器下,只需调用它

<div ng-controller="TodoCtrl">
    <span>{{todos.length}}</span>
</div>
于 2013-07-13T03:30:34.833 回答
0

起初我遇到了一些麻烦,因为 Angular 似乎势不可挡,所以我期待模型实现有一个很大的答案。答案很简单,就是使用 JS 对象。Angular 拥有您无需使用 Backbone 即可轻松创建模型所需的所有工具(我也读过这并不是使用 Angular 的真正方法)。如果您查看$emit, $broadcast, $on,您有模型更新的事件。如果你想创建对象的实例而不是单例,那么让你的工厂返回一个实例。我认为一个好的起点是angular-app。抱歉,如果这不够具体。

如果您正在寻找要使用的包,请尝试BreezeJS

于 2013-10-19T20:59:26.370 回答