Javascript 如何为我的数据建模?像主干这样的东西适合吗?
我正在使用angular js,我正在寻找一种建模数据的方法。我受到主干网的启发,开始写一些类似主干网模型的东西。在主干模型中,有访问模型成员的get和set方法。 与使用model.attributes相比,使用get和set方法的优点是什么? 如果我不需要我的角度模型来触发更改事件,那么创建类似于Backbone.Model的get和set的get和set方法值得吗 编辑Javascript 如何为我的数据建模?像主干这样的东西适合吗?,javascript,backbone.js,angularjs,Javascript,Backbone.js,Angularjs,我正在使用angular js,我正在寻找一种建模数据的方法。我受到主干网的启发,开始写一些类似主干网模型的东西。在主干模型中,有访问模型成员的get和set方法。 与使用model.attributes相比,使用get和set方法的优点是什么? 如果我不需要我的角度模型来触发更改事件,那么创建类似于Backbone.Model的get和set的get和set方法值得吗 编辑 更清楚地说,我想问的是,与直接访问字段相比,创建一个set和get方法是否有优势。如果没有任何优势,为什么骨干员工决定这
更清楚地说,我想问的是,与直接访问字段相比,创建一个set和get方法是否有优势。如果没有任何优势,为什么骨干员工决定这样做?Angular的“模型”是javascript中的任意对象 如果你在angularjs.org上查看教程 数据在控制器中定义。所以做一个数组,只要做
$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>
您只需要创建一个保存数据的服务,您可以考虑模型实例或集合之类的服务。例如,您有一些像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;
})
起初,我在这方面遇到了一些麻烦,因为Angular看起来很强大,所以我希望模型实现有一个大的答案。答案就是简单地使用JS对象。Angular拥有您自己轻松创建模型所需的所有工具,无需使用主干,我也读过,Angular并不是真正的方法。如果您查看$emit、$broadcast、$on,您就有了模型更新的事件。若您想创建对象的实例而不是单例,那个么让您的工厂返回一个实例。我认为这是一个好的开始。如果这不够具体,请道歉
如果您正在寻找要使用的软件包,请尝试。我知道。我试图在一个真实的类中对json数据建模,该类可以处理状态、生成逻辑、侦听和绑定事件。您的答案与数据建模无关。普通JavaScript对象建模对象有什么问题?与主干不同,Angular允许您坚持使用JavaScript在MVC中处理M,并为您处理其余的:此外,没有丑陋的get、set,当您更改控制器中的内容时,它会自动知道纯JavaScript对象无法维护状态、触发或侦听事件,你不能把模型相关的逻辑方法等等放在上面。当然可以,这就是变量的全部意义。。。它们在应用程序中维护状态。主干网迫使您使用Backbone.model来处理东西,因为它是一个原始的、不推荐使用的框架,设计时人们还不知道如何构建web应用程序。如果你只是把它放在$scope中,Angular会自动跟踪它发生了什么,或者你可以使用$apply。Angular sports数据绑定,当情况发生变化时,您不需要通知它,它会自行解决问题。这里有一个角度教程,让您开始@Benjamin Grunbaum:当您开发大型应用程序时,有许多模型彼此绑定。不仅仅是模型到视图。更重要的是,这里有一个普通对象无法解决的示例:我有一个为用户管理数据的对象。此对象侦听名为“用户注销”的事件。每当用户注销时,此对象都知道清除其数据。到目前为止,我甚至没有提到控制器。如果您正在构建大规模应用程序,您必须设计数据。事实上,模型甚至意识到UI交互,这表明imo的设计很差。MV*中的模型甚至不应该意识到它是UI环境的一部分,至少框架不应该强迫这一事实。在我看来,模型接收到“用户注销”这一事实表明,从一开始关注点的分离就很糟糕。此外,即使在JavaScript中没有主干,也很容易使对象成为事件发射器。无论如何,安全性应该位于不同的领域,最有可能是作为一种服务,我认为我想要的词是方面。我知道这一点。我想问的是,与直接访问字段相比,创建一个set和get方法是否有优势。如果没有任何优势,为什么主干网的人会选择这样做?@Naor因为主干网是一个幼稚的轻量级实现,Angular是一个由Misko Havery这样的人支持的成熟框架。@Benjamin Grunbaum:称Angular为成熟框架是幼稚的。