我正在使用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时,我尝试显示它...它的工作原理!谁能解释我为什么?
答案 0 :(得分:3)
是 - someVariable
是基元(布尔值,空值,未定义,数字,字符串,符号(ECMAScript 6中的新内容))。当Angular搜索要插值的变量时,如果在范围内找不到它,则只有当该变量不是基元时才可以查找原型链,例如对象。
ng-include
创建一个新范围,而您的变量是原始的,因此找不到它。
将它放在对象下时,在ng-include
创建的新子作用域中找不到该对象,但会在父作用域中搜索该对象,然后找到并呈现该作用域。
有关详细信息,请参阅Understanding Scopes.