AngularJS:ng模型不更新对象,但更新对象中的字段

AngularJS: ng-model not updating object, but updates field in object

本文关键字:对象 更新 字段 模型 AngularJS ng      更新时间:2023-09-26

我正在处理AngularJS项目,我遇到了以下问题。我有一个代码:

form.html

<form>
  <input ng-model="someVariable" type="text"/>
</form>

details.html

<div ng-include="'form.html'"></div>
{{ someVariable }}

AngularJS控制器获取详细信息。html:

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

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

是-someVariable是基元(布尔、null、未定义、数字、字符串、符号(ECMAScript 6中新增))。Angular在搜索要插值的变量时,如果在作用域中找不到,则只有当该变量不是基元(例如对象)时,才能在原型链中查找该变量。

ng-include创建了一个新的作用域,并且您的变量是基元,因此找不到它。

将其放置在对象下时,在ng-include创建的新子作用域中找不到该对象,而是在父作用域中搜索该对象,然后找到并渲染该对象。

有关更多详细信息,请阅读了解范围。