我仍然在学习angularjs,我有问题$scope
和model
对象之间的理解差异,这目前阻止我组织(使用一些最佳实践),我的应用程序。
据我所知$scope
应该是只读的(看过一些教程,我听到这个)。
所以,当我加载应用程序,我应该使用service
从数据库中获取一些数据,并将其存储在model
。
UPDATE
现在,我从服务器获取的所有数据都存储在控制器$范围,我想将它移动到服务,使控制器笨。
我也检查了这个article,我试图使用第二或第三个选项,但仍然找不到实现它的最佳方法。
这是我的服务和控制器:在angularJS应用程序中保留模型的位置?
function dataService($http) {
var service = {
getToDoList: getToDoList,
getToDoListByType: getToDoListByType,
getToDoById: getToDoById
};
return service;
function getToDoList() { }
function getToDoListByType() { }
function getToDoById() { }
}
function toDoController($location) {
var vm = this;
vm.todos = [];
vm.title = 'toDoController';
activate();
function activate() {
return getToDos().then(function() {
console.log("ToDos loaded");
});
}
function getToDos() {
return dataservice.getToDoList()
.then(function (data) {
vm.todos = data;
return vm.todos;
});
}
}
但在这个实施待办事项又是在控制器中。
我应该在哪里,并存储该列表后,我从服务器获取它从那里应设置(从控制器或服务),所以我可以操纵这个列表中缓存的方式(保持它的地方,偶尔更新)?
我从C#世界来了,还有我一直使用的实体对象(如用户,产品,项目等)来填充这些对象在一个循环,并将其存储在列表中。我无法找到一种方法,我应该如何以角度使用这种方法,如果是的话,应该只使用属性服务?
我用一个服务来保持列表和一个服务包含CRUD功能。 如果我从我的模型中加载$scope
中的数据,如果稍后更新该范围,如果代码的其他部分更改模型中的数据?
更改可能来自另一个控制器或通过SignalR进行更新。 也正如我听到当我更新数据视图为$scope
应该只读,我需要更新服务,并再次如何以及何时更新$scope
呢?
对不起,如果我的问题太noob,但我会感激,如果有人可以帮助我了解哪些角度保持什么?
某些时候ToDo列表必须在控制器中,否则您将无法绑定到它。你想要抽象出的是接触到服务的操作,以便如果服务器实现发生更改,则只需更改数据服务,而不是控制器。它还有助于单元测试,因为您可以使模拟数据服务返回假数据。在编写任何服务器代码之前,我也做同样的原型设计。 – nbering
在问题的例子中,我创建了一个抽象服务器调用的服务。我将举另一个例子:'Service获取列表'''返回列表到控制器$ scope'>'显示它的视图'=>但现在在视图中操纵该项目中的数组通过添加一些属性到每个项目(分组,着色等),我需要添加以显示这些数据。假设我不想再次更改所有这些属性(再次运行循环),但我需要从服务器获得的原始数据。但是,当我返回列表控制器我没有原始数组了。 – 1110
因为我不想再次调用服务器,所以我不知道什么是好的做法 - 在哪里保持该模型。 – 1110