任何人都知道在单独的JavaScript文件中创建模型的最佳推荐方法,并将这些注入到需要它们的控制器中,而不是在控制器中正常创建模型吗?
这样可以更容易地传递模型,你会确切知道你传递的是什么。
我对使用服务有一些想法,并将它们注入我需要的地方,即控制器。
然后,控制器会将这些服务传递给特定的服务,以进行任何繁重的操作,以保持控制器的美观和轻便
服务是唯一的,推荐的方式吗?或者有更好的替代方式吗?
还将考虑使用第三方库/模块。
我认为服务是要走的路。它们不仅是可注射的,而且它们也是Singletons - 意味着它们被注射的任何地方,共享相同的实例。
使用$ http服务进行异步调用以检索数据的服务示例:
app.factory('customerService', function($http) {
var customers = [];
$http({ url: 'api/customers/all', method:'GET'}).success(function(data) {
angular.copy(data, customers);
});
return {
customers: customers
};
});
在您的控制器或指令中,您可以注入服务并将客户绑定到您的范围:
app.controller('ctrl', function($scope, customerService) {
$scope.customers = customerService.customers;
});
最好的方法是服务,原因有两个。
工作plunker与控制器http://plnkr.co/edit/pt2xwlYqvY3r840tHJ92?p=preview之间的双向数据绑定
注意:如果您的模型中没有点,那么您做错了;)
我相信服务是最好的方式。
我已经使用范围继承来放置我的应用程序大部分需要的一些方法,例如我将这些方法附加到我的主模块/ app的.run()方法的路由方法。
如果您需要以这种方式构建应用程序,则可以将模型分离为单独的模块。