将范围变量从指令传递给控制器​​函数

时间:2015-06-18 13:11:33

标签: javascript html angularjs

我有一个我从指令调用的作用域函数,在该作用域函数中我传递了一个sciopoe变量。范围变量在该函数中发生了变化。

    <button ng-click="change(scope_variable)"></button>

控制器

    $scope.change = function(var){
         //some manipulations with var
    }

在这种情况下,范围变量不会发生变化,只会更改var。我该怎么做才能更改范围变量本身。

编辑:

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

3 个答案:

答案 0 :(得分:0)

  1. // Easter calculation in swift after Anonymous Gregorian algorithm // Also known as Meeus/Jones/Butcher algorithm func easter(Y : Int) -> NSDate { let a = Y % 19 let b = Int(floor(Double(Y) / 100)) let c = Y % 100 let d = Int(floor(Double(b) / 4)) let e = b % 4 let f = Int(floor(Double(b+8) / 25)) let g = Int(floor(Double(b-f+1) / 3)) let h = (19*a + b - d - g + 15) % 30 let i = Int(floor(Double(c) / 4)) let k = c % 4 let L = (32 + 2*e + 2*i - h - k) % 7 let m = Int(floor(Double(a + 11*h + 22*L) / 451)) let components = NSDateComponents() components.year = Y components.month = Int(floor(Double(h + L - 7*m + 114) / 31)) components.day = ((h + L - 7*m + 114) % 31) + 1 components.timeZone = NSTimeZone(forSecondsFromGMT: 0) let cal = NSCalendar(calendarIdentifier: NSGregorianCalendar) return cal.dateFromComponents(components) } println(easter(2014)) // "2014-04-20 00:00:00 +0000" 引用了var,但var没有引用范围。如果为var scope分配新值,将保留对旧var的引用而不更新。如果scope是对象或数组,则可以对其进行修改并查看var中的更改。
  2. 不要将变量命名为scopevar是一个保留关键字,可能会产生误导。

答案 1 :(得分:0)

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

//In the view
    <button ng-click="change('somevalue')"></button>

//In your controller
    $scope.change = function(someVal){
             $scope.someVar = someVal;
             //some manipulations with someVar  
    }

答案 2 :(得分:0)

这样做怎么样:

//In the view
<button ng-click="change()"></button>

//In your controller
$scope.someArray = [1, 2, 3];

$scope.change = function(){
    $scope.someArray.push(4);
}