在 Javascript 中存储对象的当前状态的最佳实践是什么?
What's the best practice to store the object's current state in Javascript?
我正在使用AngularJS应用程序编写一个JavaScript,该应用程序通常处理从Web服务下载数据,随之而来的是加载和错误消息。
起初我用
$scope.myObj = {};
$scope.myObjReady = true|false;
$scope.myObjLoading = true|false;
$scope.myObjError = true|false;
所以我可以在回调中为对象的状态设置正确的值,并且由于 angular 的双向绑定,UI 会自动刷新,但后来我选择了更有条理的方式
$scope.myObj = {
data: {},
ready: true|false,
loading: true|false,
error: true|false,
errorMessage: ""
}
我意识到,由于对象不能同时出错和加载,我应该转向不同的方法,例如
$scope.myObj.state = "";
...
$scope.myObj.state = "loading"|"ready"|"error";
但是这种方法尽管设置状态更快(在此设置为 true 之前需要将所有其他设置为 false)处理编写字符串,我觉得这是非常业余的。
在这种情况下,你会使用什么?
编辑:考虑到 AngularJS 框架,我无法与 HTML UI 文件中不在范围内的对象进行比较。
在 Javascript 中,你可以让一个对象假装成一个枚举:
var STATE = {
LOADING: 0,
READY: 1,
ERROR: 2
};
然后打电话
$scope.myObj.state = STATE.LOADING;
state
变量中将包含 1。无需任何字符串。
一些扩展信息可以在这篇博文中找到:https://stijndewitt.wordpress.com/2014/01/26/enums-in-javascript/
在 Javascript 中,你可以像这样制作枚举
var StateEnum = Object.freeze({"LOADING":1, "READY":2, "ERROR":3});
$scope.state=StateEnum.READY;
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze 保护它
为案例定义枚举。即
$scope.myObj.enums.LOADING_STATE_LOADING = 1
$scope.myObj.enums.LOADING_STATE_READY = 2
$scope.myObj.enums.LOADING_STATE_ERROR = 3
然后检查这些值,而不是每次都写入字符串
相关文章:
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- javascript导入的最佳实践是什么
- 在ng重复循环中显示条件内容的最佳方式是什么
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 在node.js中编写单元测试的最佳方式是什么
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 列出没有 mysql 的元素的最佳方法是什么
- 在AngularJS中使用多个主题的最佳方式是什么
- 存储数据的最佳方式是什么,以便与jquery一起使用
- 在企业应用程序框架中包含js/css文件的最佳实践是什么
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 用JavaScript随机给网页上的每个字母上色的最佳方式是什么
- 如果我返回表,检查 Ajax 调用是否为 200 OK的最佳方法是什么
- JavaScript - 创建可链接函数时的最佳方法是什么
- 在上下文菜单项单击上显示侧边栏/弹出窗口的最佳方法是什么
- 将JavaScript检测与MVC4显示模式集成的最佳方式是什么
- addEvent()传奇事件之后的当前最佳实践是什么