当前位置: 首页 > 知识库问答 >
问题:

在Angular.js中模型状态应该存储在哪里

微生博简
2023-03-14

我觉得Angular对模型的使用让人困惑。Angular似乎采取的方法是,模型可以是任何你喜欢的--即。Angular不包含显式的模型类,您可以使用常规JavaScript对象作为模型。

“编辑”这个问题的第二个答案很有趣,也很接近我目前使用的。

共有1个答案

缑文栋
2023-03-14

$scope是Angular的数据存储对象。它类似于数据库。$scope本身不是模型,但您可以在$scope中存储模型。

每个$scope都有一个父$scope,一直到$rootscope,形成一个松散地镜像DOM的树结构。当您调用一个需要一个新的$scope的指令(如ng-controller)时,将创建一个新的$scope对象并将其添加到树中。

$scope对象使用原型继承连接。这意味着,如果您在树中的较高级别添加模型,那么它将对所有较低级别可用。这是一个非常强大的特性,它使$scope层次结构对模板作者几乎是透明的。

$scope只是一个简单的JavaScript对象。创建多个$scope对象并不比创建一个包含多个currentImage对象的数组更浪费。这是组织代码的一种明智的方法。

通过这种方式,Angular消除了我们在JavaScript中经常发现的“我在哪里存储数据”的老问题。这是我们从Angular公司获得的巨大生产力提升的来源之一。

是否获得全局数据(例如用户ID)?将其存储在$rootscope中。获取本地数据(例如,一个库中有多个库实例的currentImage)?将其存储在属于该库的$scope对象中。

当然,没有什么可以阻止您向模型添加额外的函数并将它们存储在JSON对象中(如果您想的话),但这将是在一个不适合Angular的范例中进行移植。

Angular对象通常是数据的存储库,而不是函数的存储库。

当然,您在客户机上持有的模型不是真正的模型。您的实际模型,您的唯一真实来源存在于服务器上。我们使用API对其进行同步,但如果两者之间存在冲突,那么数据库中的模型显然是最终的胜利者。

例如,服务可能包含与RESTful API对话的方法,或者验证数据的方法,或者您可能需要做的任何其他工作。

当然,您不应该使用服务作为模型。用它们作为可以做事情的对象。有时他们会对你的模特做些什么。这是一种不同的思维方式,但是可行的。

 类似资料:
  • 问题内容: 我对这个问题进行了一些搜索,但发现了非常模糊的答案。在redux中,我们知道状态存储为对象。但是这种状态实际上存储在哪里?它是否以某种方式保存为文件,以后我们可以访问?我所知道的是,它不会以Cookie格式或浏览器的本地存储方式存储它。 问题答案: Redux中的状态存储在Redux存储中的内存中。 这意味着,如果刷新页面,该状态将消失。 您可以想象该商店看起来像这样: redux中的

  • 下面是一个简单的场景: 用户单击“Create order”:将创建一个订单(首先保持其状态=NEW) 用户完成订单填写后,单击SAVE-->state is now Submited 当另一个检查订单并验证它时,必须进行一个过程。只有在调用了其他一些服务并给予许可时,才会验证该订单。 整个工作流程是: null null 谢谢

  • 我正在使用vue.js和vuex开发一个应用程序,它使用JWT令牌对JSON API服务器进行身份验证。所以我想知道存放JWT代币的最佳做法是什么? 如果我将其存储在vuex商店中,则页面刷新后它会丢失,因此用户需要再次登录,这不是很方便。 如果我将其存储在浏览器的本地存储中,它会在下次登录之前被弃用,然后假设身份验证令牌的组件会混淆。我不知道如何处理这个问题。 感谢你对此的暗示。

  • 然后我上传了游戏控制台的应用程序包,并从Google Play安装到我的手机上。接下来,我在使用该应用程序时下载了模块。但是,在我运行之后,它只显示apk,而没有apk的符号。顺便说一句,似乎安装了模块,因为模块的功能可以正常工作。 我的问题是Google Play将这些动态加载的模块(或APK)保存在哪里。以及是否有任何方法可以使用(例如)访问它们。

  • 问题内容: 我最近开始学习Python,并且有2个与模块有关的问题。 有没有办法获取机器上可用(即已安装)的Python模块列表? 我正在使用Ubuntu Karmic和Synaptic进行软件包管理。我刚刚安装了一个python模块,模块代码实际存储在我的机器上哪里?(是否存在存储模块的默认[推荐]位置)? 问题答案: 1)有没有办法获取机器上可用(即已安装)的Python模块列表? 这对我有用

  • 半绿拇指在这里。我希望下载一些Apache Commons和Google Guava库以在Eclipse中使用。多个 Q 理想情况下,我希望它位于所有Mac / * NIX系统通用的目录中。然而,这个Q 那么我应该把第三方Java库放在哪里呢?