Skip to main content
 首页 » 编程设计

angularjs之如果你没有在你的 AngularJS 模型中使用 .(dot) 你做错了吗

2024年11月24日7zhoujg

我记得在 AngularJS 的视频中看到这句名言说应该始终使用 . (点)在您的模型中。

好吧,我正在尝试遵循这个说我有

   var item = {} 
   item.title = "Easy Access to support"; 
   item.available = true; 
   item.price = 31.67; 

所以在我看来这很好用
  {{ item.title }} 
  {{ item.available }} 

我正在使用一个点,所以我认为这很好。

但我有一些属性我不认为是模型的一部分,但也许我错了。例如,我有一个使用 ng-disable 启用或禁用按钮的属性,我使用点格式输入了这个属性。它基本上是这样输入的
 $scope.disableButton = true; 

我像使用它一样
 ng-disable="disableButton"...... 

我应该将模型的这一部分设为“项目”吗?或者创建另一个 js 对象,这样我就可以使用点来保存这个属性?

有人知道这是否可以接受,还是我应该用 .dot 做所有事情(甚至是这些简单的属性)?

谢谢

请您参考如下方法:

“您的模型中应该总是有一个点”是指ngModel .该指令执行双向绑定(bind)。如果你双向绑定(bind)到一个原语(例如你的情况下的 bool 值),setter 会将它设置在当前范围而不是定义它的范围上,当你有一个大用户时,这可能会导致头痛 -与许多子范围的接口(interface)。 它没有引用其他指令,例如 ngDisable . this explanation有关此特定问题的更多详细信息。

示例场景:具有 $scope.foo = "bar" 的父范围,以及一个带有 <input type="text" data-ng-model="foo"> 的子作用域.它将显示 bar最初,但一旦用户更改值,foo将在 上创建子范围 并且绑定(bind)将读取和写入该值。家长的foo将保留 bar .希望总结得好。

所以对于 ngModel目的,您可能必须创建一个对象来解决此类绑定(bind)问题,但对于任何其他指令,您应该具有常规的逻辑分组。