AngularJS:ng-model不会更新对象,但会更新对象中的字段。

36 浏览
0 Comments

AngularJS:ng-model不会更新对象,但会更新对象中的字段。

这个问题已经有了答案:

在AngularJS中范围的原型/原型继承的细微差别是什么?

我正在使用AngularJS项目,我遇到了以下问题。我有一段代码:

form.html

 

details.html

{{ someVariable }}

details.html的AngularJS控制器

angular.module('SomeModule')
  .controller('DetailsController', function ($scope) {
  $scope.someVariable = {};
});

使用这段代码,someVariable不会显示,但是当我将ng-model更改为someVariable.someField并尝试显示它时,它就可以工作了!有人能解释一下为什么吗?

admin 更改状态以发布 2023年5月24日
0
0 Comments

是的 - someVariable 是一个原始类型(布尔值,null,undefined,数字,字符串,符号(在 ECMAScript 6 中新增))。当 Angular 在查找要插值的变量时,如果在作用域中找不到,只有在该变量不是原始类型(例如对象)时才会在原型链上查找。

ng-include 创建了一个新的作用域,而你的变量是一个原始类型,因此找不到。

当你将它放在一个对象下面时,对象在由 ng-include 创建的新子作用域中找不到,但会在父作用域中搜索并呈现。

要了解更详细的信息,请阅读理解作用域

0