两个问题:
1)我正在使用angular-js,我正在寻找一种模拟数据的方法。 我对骨干模型的想法有经验。 这是一个棱角分明的工厂吗?拥有大量工厂(每种型号一个)是不是“最佳实践”,基本上模仿“工厂”的“阶级”?
工厂用一些“辅助”功能代表我的模型(比如Backbone上的模型)或者我的工厂代表一个成员列表(如骨干上的集合)?
2)例如,假设我想创建映射到REST资源的对象,并且我有一个“成员”资源,我通过GET-ing获得:/ members / 123。这将返回带有各种字段的json对象。类似的东西:
{id:123,name:'angularjs',date_created:1235845}
现在,我希望在我的AngularJS应用程序中使用此“成员”对象进行某种表示。这种表示不仅仅是字段的映射 - 我想添加“辅助”函数,例如将date_create字段转换为人类可读的函数。
如何表示?使用工厂+ $资源
答案 0 :(得分:2)
以下是在您的案例中如何使用工厂的好例子。
<强>工厂强>
angular.module('myApp').factory('Member', function($http) {
// Member is a class which we can use for retrieving and
// updating data on the server
var Member = function(data) {
angular.extend(this, data);
}
// a static method to retrieve Member by id
Member.get = function(id) {
return $http.get('/Member/' + id).
then(function(response) {
return new Member(response.data);
});
};
// an instance method to create a new Member
Member.prototype.create = function() {
var member= this;
return $http.post('/Member/', member).then(function(response) {
book.id = response.data.id;
return member;
});
}
return Member;
});
然后在控制器中你可以编写如下内容:
<强>控制器强>
var controller = function(Member) {
var memeber= new Member();
memeber.name = 'Fox';
memeber.create();
// to retrieve a memeber
var memeberPromise = Memeber.get(123);
memeberPromise.then(function(b) {
memeber = b;
});
};
这里我只使用了id
但您了解了流程
希望它可以帮助你解决问题