Javascript 使用ng click和函数设置变量之间的角度差
这是我已经运行过几次的东西 假设我的控制器中有以下变量:Javascript 使用ng click和函数设置变量之间的角度差,javascript,angularjs,angularjs-ng-click,Javascript,Angularjs,Angularjs Ng Click,这是我已经运行过几次的东西 假设我的控制器中有以下变量: $scope.valueArr = ['Hello', 'No', 'Yes']; $scope.myValue = 'Hello'; 我重复以下几点: 在我的控制器中添加以下功能: $scope.setMyValue = function(value){$scope.myValue = value} 然后,它删除旧的类,只将活动类添加到最后按下的li 因此,在控制器中没有函数的情况下,它似乎不是重新招标。谁能告诉我为什么?当你应该选
$scope.valueArr = ['Hello', 'No', 'Yes'];
$scope.myValue = 'Hello';
我重复以下几点:
在我的控制器中添加以下功能:
$scope.setMyValue = function(value){$scope.myValue = value}
然后,它删除旧的类,只将活动类添加到最后按下的li
因此,在控制器中没有函数的情况下,它似乎不是重新招标。谁能告诉我为什么?当你应该选择一个而不是另一个的时候
请注意,这只是许多没有重新招标的例子之一 ng repeat为每个重复的元素创建一个新的子范围。所以当你写作的时候
<a ng-click="myValue = value"> </a>
当用户单击按钮时,您正在的子范围上创建新变量“myValue”。这会隐藏父作用域上的“myValue”值,但不会更改它-因此所有其他作用域仍然从父作用域继承“myValue”值
然而,当你写作的时候
<a ng-click="setMyValue(value);"> </a>
您正在引用父作用域上定义的函数setMyValue。因此,当用户单击该按钮时,将执行setMyValue函数,并在父作用域上设置“myValue”。未触及子作用域。由于父作用域上的值已更改,因此所有元素都将继承它。ng repeat为每个重复的元素创建一个新的子作用域。所以当你写作的时候
<a ng-click="myValue = value"> </a>
当用户单击按钮时,您正在的子范围上创建新变量“myValue”。这会隐藏父作用域上的“myValue”值,但不会更改它-因此所有其他作用域仍然从父作用域继承“myValue”值
然而,当你写作的时候
<a ng-click="setMyValue(value);"> </a>
您正在引用父作用域上定义的函数setMyValue。因此,当用户单击该按钮时,将执行setMyValue函数,并在父作用域上设置“myValue”。未触及子作用域。由于父作用域上的值已更改,因此所有元素都将继承该值。这是因为ng repeat创建了一个子作用域来引用
这意味着每次重复都有一个单独的范围
第一次重复有一个单独的子作用域
第二次重复有一个单独的子作用域
第三次重复有一个单独的子范围
。。。像智者一样
因此,如果您在repeat的子作用域中以ng click=myValue=value角度搜索的形式访问变量myValue,并且在意识到没有名为myValue的变量或没有任何其他可访问的引用之后,请在子作用域上创建myValue。如何使用$parent.myValue访问父作用域
检查
另一种方法是使用如下对象:
$scope.tempObj = {myValue : 'Hello'};
并使用
<a ng-click="tempObj.myValue = value">
&
在setMyValue函数中,它使用$scope.myValue,它位于控制器作用域中,而不在repeat的子作用域中。这是因为ng repeat创建了一个子作用域
这意味着每次重复都有一个单独的范围
第一次重复有一个单独的子作用域
第二次重复有一个单独的子作用域
第三次重复有一个单独的子范围
。。。像智者一样
因此,如果您在repeat的子作用域中以ng click=myValue=value角度搜索的形式访问变量myValue,并且在意识到没有名为myValue的变量或没有任何其他可访问的引用之后,请在子作用域上创建myValue。如何使用$parent.myValue访问父作用域
检查
另一种方法是使用如下对象:
$scope.tempObj = {myValue : 'Hello'};
并使用
<a ng-click="tempObj.myValue = value">
&
在setMyValue函数中,它使用$scope.myValue,它位于控制器作用域中,不在repeat的子作用域中。javascript对象很奇怪。有一条关于角度应用的一般性建议,它总是使用一个点。通过始终使用点,您将处理对象属性,这在绑定时非常有用。有时绑定到原语会变得非常奇怪。看到了吗,javascript对象很奇怪。有一条关于角度应用的一般性建议,它总是使用一个点。通过始终使用点,您将处理对象属性,这在绑定时非常有用。有时绑定到原语会变得非常奇怪。看这个,关于没有变量的部分是错误的。如果它存在于控制器作用域中,则它将位于子作用域中。但是它是一个原语,没有继承为什么它不为子范围创建一个新对象,就像它为子范围创建一个新变量一样?@User2检查这个答案关于没有变量的部分是错误的。如果它存在于控制器作用域中,则它将位于子作用域中。但是它是一个原语,没有继承性为什么它不为子范围创建一个新对象,就像它为子范围创建一个新变量一样?@User2检查这个答案
$scope.setMyValue = function(value){$scope.myValue = value}