gpt4 book ai didi

javascript - 向 Angular 中的 javascript 对象添加行为

转载 作者:行者123 更新时间:2023-11-28 19:41:07 24 4
gpt4 key购买 nike

我刚开始使用 Angular,并且有一个关于向 Angular 对象添加行为的问题。

我有一个例子,我得到一个对象/或对象数组,比如使用 $http

的人
var person =
{
id : 123,
firstname : "james",
lastname : "bond",
username : "james00",
profileGuid : "DSKFSJKFBSFBJBSFKJBAKBDS",
projects : [
{
id : 1,
name : "gold finger"
}
]
}

我想添加像这样的行为

 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, speeBehavior)

  • 使用此类 spyBehavior 对象添加行为的优点/缺点是什么?
  • 这应该被定义为 Angular 服务吗? - 在这种情况下,我失去了 this
  • 的引用
  • 这应该在 Angular 世界之外并作为一个简单的 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;
});

然后,您可以将您的用户“模型”注入(inject)到您想要的任何模块中。如果您想获取该模型的新实例,只需执行

var user = new User(data);

遵循单一责任方法,这个对象有点愚蠢。它只知道它自己的属性,如何处理它们等等。如果您想添加一些行为,例如通过 $http 更新此对象,只需将 $http 服务注入(inject)您的 User 模型并执行您想要的操作。请确保不要与其他模型创建不必要的依赖关系。

关于javascript - 向 Angular 中的 javascript 对象添加行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25016217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com