Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将范围变量从指令传递到控制器函数_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 将范围变量从指令传递到控制器函数

Javascript 将范围变量从指令传递到控制器函数,javascript,html,angularjs,Javascript,Html,Angularjs,我有一个从指令调用的范围函数,在这个范围函数中我传递了一个sciopoe变量。该函数中的范围变量正在更改 <button ng-click="change(scope_variable)"></button> 在这种情况下,不会更改范围变量,只更改var。如何更改范围变量本身 编辑: 我传递的范围变量是一个数组,我所做的更改主要是对数组中的值进行排序、插入和删除 scope引用了var,但var没有引用scope。如果将新值分配给varscope将保留对旧var

我有一个从指令调用的范围函数,在这个范围函数中我传递了一个sciopoe变量。该函数中的范围变量正在更改

    <button ng-click="change(scope_variable)"></button>
在这种情况下,不会更改范围变量,只更改var。如何更改范围变量本身

编辑:

我传递的范围变量是一个数组,我所做的更改主要是对数组中的值进行排序、插入和删除

  • scope
    引用了var,但var没有引用scope。如果将新值分配给var
    scope
    将保留对旧var的引用,而不会更新。如果
    var
    是一个对象或数组,您可以修改它并查看
    范围中的更改
  • 不要命名变量
    var
    var
    是一个保留关键字,可能有误导性

  • 您不需要从视图中传递范围变量。您可以从控制器访问范围变量

    //In the view
        <button ng-click="change('somevalue')"></button>
    
    //In your controller
        $scope.change = function(someVal){
                 $scope.someVar = someVal;
                 //some manipulations with someVar  
        }
    
    //在视图中
    //在控制器中
    $scope.change=函数(someVal){
    $scope.someVar=someVal;
    //someVar的一些操作
    }
    
    这样做怎么样:

    //In the view
    <button ng-click="change()"></button>
    
    //In your controller
    $scope.someArray = [1, 2, 3];
    
    $scope.change = function(){
        $scope.someArray.push(4);
    }
    
    //在视图中
    //在控制器中
    $scope.someArray=[1,2,3];
    $scope.change=函数(){
    $scope.someArray.push(4);
    }
    
    您能否详细说明您正在尝试进行的更改?由于无法更改引用,您可能可以执行其他操作。指令是孤立的,因此您无法直接更改变量。您可以使用共享服务更新变量,并使其可供控制器使用。是,但是我想把不同的范围变量传递给函数,范围变量的最终值应该改变。我建议你把一些值传递给函数,然后解释它,或者把这个值设置为范围变量。是的,但是这需要很多if-else语句。我正试图逃避这一点。在angular中没有其他方法吗?var只是一个数组,但范围变量没有得到更新。我有几个数组可以修改。
    //In the view
    <button ng-click="change()"></button>
    
    //In your controller
    $scope.someArray = [1, 2, 3];
    
    $scope.change = function(){
        $scope.someArray.push(4);
    }