我有一个非常困难的时刻,选择一个明确的方式来创建模型的角度。几个星期以来,我一直在做这样的事情:
documentModule.factory('Document',function(){
function MyModel(){
this.prop = ''
}
MyModel.prototype.foobar = function(){
// Some logic to perform on model data
};
return{
getInstance: function(){
return new MyModel();
}
}
});我将所有处理模型数据的方法添加到原型中。
最近,我有幸阅读了一本关于“人类JavaScript”的免费电子书,你可能已经偶然发现了:http://read.humanjavascript.com。
在第七章“模型”中,他们介绍了一种将模型提供给强加给我的应用程序的方法。我喜欢这样的想法:“能够打开模型的代码,读取它存储的属性以及这些属性的类型”。
然而,我自己并不是一个太聪明的人,也不能想出一个解决方案来使用这个角度。另外,你是如何与模特合作的?
,你对这个概念有什么想法,你会推荐用角度来实现类似的东西吗?如果是的话,你会怎么开始呢?
发布于 2014-06-30 13:40:46
我认为使用原型继承是个好主意,它为某些逻辑提供了一个适当的位置,从而有助于保持控制器的精确性。
我建议简化你的例子:
documentModule.factory('MyModel',function(){
function MyModel(){
this.prop = ''
}
MyModel.prototype.foobar = function(){
// Some logic to perform on model data
};
return MyModel;
});如下所示的使用MyModel:
documentModule.factory('MyModelController',function($scope, MyModel){
$scope.myModel = new MyModel();
});如果您想对模型提供基本的REST支持,请看一下$resource https://docs.angularjs.org/api/ngResource/service/$resource。
发布于 2014-06-30 15:50:47
有一个不同的-- Human JavaScripts中的模型不是构造函数,- you不能在实例化进程上传递参数。
要提供默认值,只需修改工厂内的defaults对象
angular.module('app', [])
.factory('model', function () {function model(args) {
var defaults = {
foo: 'default value',
bar: 'default value',
quux: 'other value'
};
this.options = angular.extend(defaults, args);
}
model.prototype.getAccessToOptions = function () {
return this.options;
};
return model;
})
.controller('model', function ($scope, model) {
var model = new model({
foo: 'foo',
bar: 'bar'
});
console.log('model.getAccessToOptions()', model.getAccessToOptions());
// model.getAccessToOptions() Object {foo: "foo", bar: "bar", quux: "other value"}
});https://stackoverflow.com/questions/24490411
复制相似问题