gpt4 book ai didi

javascript - Angular ,将范围传递给函数(将范围作为变量传递?)

转载 作者:搜寻专家 更新时间:2023-11-01 04:48:34 26 4
gpt4 key购买 nike

我正在尝试将作用域传递给函数,但似乎无法使其正常工作。这就是我所拥有的 -

ng-click="clickFunction(scope1)"

//the function
$scope.clickFunction = function(passedScope){

passedScope = false;
console.log($scope.scope1);

所以 - 这很简单,我只想传递范围并在此单击中将其设置为 false。当我在更改它之后记录范围时,它仍然说它是真的。我也试过了-

  $scope.passedScope

我想做的是设置 $scope.scope1 = false。它在 Controller 的顶部设置为 true 并控制附近的按钮,该按钮具有 ng-disabled="!scope1",我不能只做一个 scope1 =!scope!在点击时因为它通过模式确认用户想要完成然后运行 ​​modalInstance.result.then(function () { 然后我需要将传递的范围设置为 false。我会直接调用范围,但是我正在尝试创建一个可以跨多个删除函数使用的函数,从而尝试将需要更改为 false 的范围传递给 false。

我在想我可以通过函数传递作用域。

谢谢!

更新根据@Josep 今天向我展示的内容,我能够通过像这样将范围作为字符串传递来解决问题

   ng-click="clickFunction('scope1')"

然后做

$scope[passedScope] = false;

最佳答案

如果你想将 View 的一部分的当前范围传递给一个函数,方法是:

ng-click="clickFunction(this)"

但是在你的函数中你应该像这样处理这个范围:

$scope.clickFunction = function(passedScope){
passedScope.somePropertyOfTheScope = false;//<---Notice the difference with the code that you are suggesting.

您不能将scope设置为false,您可以将其中一个属性设置为false ,但不是作用域本身。这没有任何意义,因为 scope 是一个包含一组属性、事件和函数的对象。其中一些继承自其范围祖先,直至 $rootScope,而其中一些是自定义的。

也许您正在尝试做的是将 scope 的属性之一作为函数的参数传递,以便您可以在该函数中更改它 .但是,在 javascript 中,通过引用传递参数的唯一方法是传递对象并更新其属性之一,如果将 bool 属性传递给函数,那么您将传递该 bool 属性的值,而不是引用.请看这个:Pass Variables by Reference in Javascript .

关于javascript - Angular ,将范围传递给函数(将范围作为变量传递?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26805471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com