Javascript $scope内部和外部ng include的行为不同
因此,我做了一些实验,在两个不同的selectbox上创建一个ng更改行为,同时使用相同的$scope。一个在ng include指令内部,另一个在ng include指令外部,有趣的是,当我实现数据绑定时,结果是可以的,但是当我尝试查看控制台选项卡时,返回的结果不同 ng include指令外部的一个可以,而ng include指令内部的一个总是返回值“a”或静态值 这是index.html模型Javascript $scope内部和外部ng include的行为不同,javascript,angularjs,Javascript,Angularjs,因此,我做了一些实验,在两个不同的selectbox上创建一个ng更改行为,同时使用相同的$scope。一个在ng include指令内部,另一个在ng include指令外部,有趣的是,当我实现数据绑定时,结果是可以的,但是当我尝试查看控制台选项卡时,返回的结果不同 ng include指令外部的一个可以,而ng include指令内部的一个总是返回值“a”或静态值 这是index.html模型 <select ng-model="list" ng-change="changeOut
<select ng-model="list" ng-change="changeOutsideTemplate()">
<option value="a">A</option>
<option value="b">B</option>
</select>
{{list}}
<div ng-include="test"></div> //this scope caries test.html
<select ng-model="list" ng-change="changeInsideTemplate()">
<option value="a">A</option>
<option value="b">B</option>
</select>
{{list}}
这是工作时间
你认为这个问题的原因是什么?有人想详细说明吗?
ng include
指令创建一个新的子作用域。
这是你的电话号码
当您在ng include
html中的模型作为
时,angular将检查其子范围中的模型列表
,然后angular将意识到ng include
子范围中没有名为列表
的模型。然后angular将在子范围内创建一个名为list
的新子范围模型
如果你喜欢
<select ng-model="$parent.list" ng-change="changeInsideTemplate()">
index.html
在include.html中
<div ng-include="$parent.include"></div> // because `$scope.include` in parent scope
<select ng-model="$parent.$parent.list" ng-change="otherChanging()"> // because `$scope.list` is in parent scope of parent scope (second upper parent scope).
//因为“$scope.list”在父作用域(第二个上父作用域)的父作用域中。
下面是使用$parent的示例
这是正在使用的对象
使用对象更合适。这是正确的。或者更好的解决方法是使用$scope.list={value:'a'}
更好和ng model=“list.value”
。上帝既然你提到了它,我就可以在文档中看到指令信息了。。哇,很有趣,所以这就是为什么它没有像预期的那样工作。。谢谢你的解释,我现在明白了!顺便说一句,如果情况是这样的呢?这是解决办法。第二种方法更适合使用它。本例使用的是$parent
;因此,基本上每个ng包含都被添加了,新的子范围也被添加了。。但是如果使用list.value,则该方法比使用$parent.list的方法更合适。我认为$parent.list。。。我现在明白了。。谢谢你们!和你们讨论很有趣。。
<select ng-model="list.value" ng-change="changeOutsideTemplate()">
<select ng-model="list.value" ng-change="changeInsideTemplate()">
<div ng-include="$parent.include"></div> // because `$scope.include` in parent scope
<select ng-model="$parent.$parent.list" ng-change="otherChanging()"> // because `$scope.list` is in parent scope of parent scope (second upper parent scope).