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

时间:2015-12-15 12:05:33

标签: javascript html angularjs angular-ngmodel

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

form.html

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

details.html

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

AngularJS Controller for details.html

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

使用此代码someVariable不显示,但是当我将ng-model更改为someVariable.someField时,我尝试显示它...它的工作原理!谁能解释我为什么?

1 个答案:

答案 0 :(得分:3)

是 - someVariable是基元(布尔值,空值,未定义,数字,字符串,符号(ECMAScript 6中的新内容))。当Angular搜索要插值的变量时,如果在范围内找不到它,则只有当该变量不是基元时才可以查找原型链,例如对象。

ng-include创建一个新范围,而您的变量是原始的,因此找不到它。

将它放在对象下时,在ng-include创建的新子作用域中找不到该对象,但会在父作用域中搜索该对象,然后找到并呈现该作用域。

有关详细信息,请参阅Understanding Scopes.