向Java中的javascript对象添加行为
我对使用angular很陌生,对于在angular中向对象添加行为有一个疑问 我有一个例子,我得到了一个对象或对象数组,比如说person使用向Java中的javascript对象添加行为,javascript,angularjs,Javascript,Angularjs,我对使用angular很陌生,对于在angular中向对象添加行为有一个疑问 我有一个例子,我得到了一个对象或对象数组,比如说person使用$http var person = { id : 123, firstname : "james", lastname : "bond", username : "james00", profileGuid : "DSKFSJKFBSFBJBSFKJBAKBDS", proj
$http
var person =
{
id : 123,
firstname : "james",
lastname : "bond",
username : "james00",
profileGuid : "DSKFSJKFBSFBJBSFKJBAKBDS",
projects : [
{
id : 1,
name : "gold finger"
}
]
}
我想添加像say这样的行为
var spyBehavior =
{
greet : function(){
return this.lastname + " " + this.firstName + " " + this.lastName;
},
hasExperience : function(){
this.projects && this.projects.length && this.projects.length > 0
}
}
目前,我使用angular.extend(person,spyBehavior)
- 使用此类
对象添加行为的优缺点是什么spyBehavior
- 是否应将其定义为角度服务?-在这种情况下,我将
this
- 这是否应该在angular world之外,作为一个简单的javascript对象存在,并围绕$http输出进行包装?我该怎么做
- 我想你想要的是某种型号。我总是以工厂的方式定义我的模型,因为服务是单例的
angular.module('myApp').factory('User', function() {
var _greet = function() {
console.log("hello");
};
var User = function(data) {
angular.extend(this, {
email: null,
name: null
greet: _greet
}, data);
};
return User;
});
然后,您可以将您的用户“模型”注入到您想要的任何模块中。如果您想获得该模型的新实例,只需执行
var user = new User(data);
按照单一责任的方法,这个对象有点愚蠢。它只知道它自己的属性,如何处理它们等等。如果您想添加一些行为,如通过
$http
更新此对象,只需将$http
服务注入到您的用户模型中,然后执行您想要的操作。请确保不要与其他模型产生不必要的依赖关系。我认为您需要的是某种模型。我总是以工厂的方式定义我的模型,因为服务是单例的
angular.module('myApp').factory('User', function() {
var _greet = function() {
console.log("hello");
};
var User = function(data) {
angular.extend(this, {
email: null,
name: null
greet: _greet
}, data);
};
return User;
});
然后,您可以将您的用户“模型”注入到您想要的任何模块中。如果您想获得该模型的新实例,只需执行
var user = new User(data);
按照单一责任的方法,这个对象有点愚蠢。它只知道它自己的属性,如何处理它们等等。如果您想添加一些行为,如通过
$http
更新此对象,只需将$http
服务注入到您的用户模型中,然后执行您想要的操作。请确保不要与其他模型产生不必要的依赖关系。我认为您需要的是某种模型。我总是以工厂的方式定义我的模型,因为服务是单例的
angular.module('myApp').factory('User', function() {
var _greet = function() {
console.log("hello");
};
var User = function(data) {
angular.extend(this, {
email: null,
name: null
greet: _greet
}, data);
};
return User;
});
然后,您可以将您的用户“模型”注入到您想要的任何模块中。如果您想获得该模型的新实例,只需执行
var user = new User(data);
按照单一责任的方法,这个对象有点愚蠢。它只知道它自己的属性,如何处理它们等等。如果您想添加一些行为,如通过
$http
更新此对象,只需将$http
服务注入到您的用户模型中,然后执行您想要的操作。请确保不要与其他模型产生不必要的依赖关系。我认为您需要的是某种模型。我总是以工厂的方式定义我的模型,因为服务是单例的
angular.module('myApp').factory('User', function() {
var _greet = function() {
console.log("hello");
};
var User = function(data) {
angular.extend(this, {
email: null,
name: null
greet: _greet
}, data);
};
return User;
});
然后,您可以将您的用户“模型”注入到您想要的任何模块中。如果您想获得该模型的新实例,只需执行
var user = new User(data);
按照单一责任的方法,这个对象有点愚蠢。它只知道它自己的属性,如何处理它们等等。如果您想添加一些行为,如通过
$http
更新此对象,只需将$http
服务注入到您的用户模型中,然后执行您想要的操作。请确保不要与其他模型建立不必要的依赖关系。如果您是从HTTP后端检索模型,AngularJS有一个很酷的功能,名为transformResponse
。您可以为特定的$http
调用指定transformResponse
函数。函数将接收http请求的响应作为参数,根据您的实现对其进行操作,然后返回它。当然,由于angular$resource
是在$http
之上构建的,因此您可以在这两种方式中使用transformResponse
简言之,如果您希望接收一组人员并使用一些功能对其进行装饰,我会这样做:
- 实现映射到API的
人员
李>$resource
- 实现一个函数,在给定一组人员的情况下,添加所需的行为
- 将上述函数指定为人力资源的
参数transformResponse
$http
请求执行完全相同的操作,transformResponse
属性也可以以相同的方式指定
另请参见。如果您从HTTP后端检索模型,AngularJS有一个很酷的功能,名为
transformResponse
。您可以为特定的$http
调用指定transformResponse
函数。函数将接收http请求的响应作为参数,根据您的实现对其进行操作,然后返回它。当然,由于angular$resource
是在$http
之上构建的,因此您可以在这两种方式中使用transformResponse
简言之,如果您希望接收一组人员并使用一些功能对其进行装饰,我会这样做:
- 实现映射到API的
人员
李>$resource
- 实现一个函数,在给定一组人员的情况下,添加所需的行为
- 将上述函数指定为人力资源的
参数transformResponse
$http
请求执行完全相同的操作,transformResponse
属性也可以以相同的方式指定
另请参见。如果您从HTTP后端检索模型,AngularJS有一个很酷的功能,名为
transformRespo