【问题标题】:Why data binding doesn't always work with primitives?为什么数据绑定并不总是适用于原语?
【发布时间】:2016-03-12 10:15:06
【问题描述】:

学习 JS 和 Angular 的里程碑之一是学习到与原语进行两种方式的数据绑定是很棘手的。如果你想确保数据绑定有效,你应该总是把它打包到一个对象中——这是我公司的一些资深人士告诉我的。我的问题是——为什么会这样?到底发生了什么让数据绑定在 JS 中如此复杂?

我发现 Javascript 通过尊重传递对象,而通过值传递原语。那么在例如 AngularJS 控制器中究竟发生了什么,使我们能够在 ngModel 中绑定原语?

编辑

欢迎任何文章、指点!

【问题讨论】:

  • 对象是引用,引用的内容可以编辑。基元只是值,不绑定到变量。因此,如果您有一个对象并将其引用传递给例如一个指令,您可以对同一个对象进行更改。如果您只是传递例如的值一个整数并对其进行编辑,它不会在初始位置更新。通过将整数包装到对象中,您将再次获得引用,并且双方都可以进行更改。
  • @ssc-hrep3,这是有道理的。 Angular 控制器怎么样?它们如何与原语一起工作?您可以在 int 上使用 ngModel,它会自动更新。
  • 在您的 HTML 中,您可以使用 ng-model 定义变量。然而,该值存储在 $scope 对象中。您可以通过该对象访问每个 ngModel 键。如果您有 ,则可以使用 $scope.tel 访问整数。所以,一切都被包裹在一个对象中。

标签: javascript angularjs data-binding


【解决方案1】:

这里是好的postpost。 简而言之:

“原始值(例如数字、字符串)在 JavaScript 中是不可变的。因此,只要对它们进行更改,就意味着我们实际上是在丢弃之前的实例并使用不同的实例。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多