angularjs改变ng-repeat变量和调用函数

时间:2015-08-09 00:47:11

标签: angularjs

我正在尝试在单击“保存”按钮时切换类,但也调用函数。我正在使用coffeescript。函数被调用但变量永远不会被设置为false。

div(ng-class="{'someclass':setListFocus}, ng-repeat="item in items")

  a(ng-click="setListFocus=false;someFunction();")
    span(class="gs-desktop") Save
  // Delete user data.
  a(ng-click="setListFocus=true")
    span Edit

2 个答案:

答案 0 :(得分:0)

我认为你的小例子缺少各种数据。 我建议使用controllerAs,例如:

<div ng-controller="myController as vm">

然后将绑定更改为vm.setListFocus

或者另一种选择是改变你的控制器代码:

function myController($scope) {
    $scope.list = { focus: false };
}

然后将绑定更改为list.focus。这将解决您的范围继承问题。

答案 1 :(得分:0)

您可以通过切换someFunction()

的值来开始setListFocus
$scope.someFunction = function(){
     $scope.setListFocus = !$scope.setListFocus;
     // ... rest of someFunction()
}

然后角度模板就是这样:

a(ng-click="someFunction()")

您可以做的另一件事是设置一个切换ListFocus函数,该函数可以使用可选的回调参数。这意味着您可以在true或false之间切换listfocus,并可选择执行另一个函数。我不打算继续回答coffeescript,因为我不熟悉,and not everyone is.

$scope.toggleListFocus = function(andThen = false){
    $scope.listFocus = !$scope.listFocus;
    if(andThen==false) andThen();
}
//usage..
//toggle $scope.listFocus
enter code here
a(ng-click="toggleListFocus()")
//toggle then someFunction()
a(ng-click="toggleListFocus(someFunction())")