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