如何在ng-click angular上使用动态变量?

时间:2016-08-10 15:36:02

标签: angularjs angularjs-scope angularjs-ng-click angularjs-interpolate

好吧,我不知道如何在ng-click属性上使用“动态”变量。 在这种情况下,我想要ng-click ng-if等参考中的更新变量

我的想法是从引用更新变量,没有create function来更新它。

控制器:

$scope.elements = [
    //...
    {
        age:20,
        dynamicallyUpdateVariableWithFollowingName:"age"
    }
    //...
];

查看:

<div ng-repeat="element in elements">
    <a href="" ng-click="element.dynamicallyUpdateVariableWithFollowingName = 27 ">Update AGE</a>
    <h1>You age is {{element.age}}</h1>
</div>

所以,我不想使用这种方法:

控制器:

$scope.elements = [
    //...
    {
        age:20,
        dynamicallyUpdateVariableWithFollowingName:"age"
    }
    //...
];
$scope.update = function( varname , value ){ $scope[varname] = value;}

HTML:

<div ng-repeat="element in elements">
    <a href="" ng-click=" update(' dynamicallyUpdateVariableWithFollowingName', 27) ">Update AGE</a>
    <h1>You age is {{element.age}}</h1>
</div>

谢谢!

4 个答案:

答案 0 :(得分:1)

因此,您的问题是您希望在不使用任何功能的情况下更新数据,这意味着您不想使用控制器来更新数据。

所以它非常简单......

这是你的.js(控制器代码)

$scope.elements = [
    {
        age: 20,
        dynamicallyUpdateVariableWithFollowingName: 'age'
    }
];

// HTML

<div ng-repeat="element in elements track by $index">
  <a href="" ng-click="element.age = 21">Update Age</a>
  <h1>Your age is {{element.age}}</h1>
</div>

先谢谢

答案 1 :(得分:0)

可能会帮助你

HTML

   <div ng-repeat="element in elements">
        <a href="" ng-click="Update($index)">Update AGE</a>
        <h1>You age is {{element.age}}</h1>
    </div>

js part

$scope.Update=function(i){
$scope.elements[i].age="new age";
}


您可以在Update功能

中查看条件

更新

这是你期待的,请点击这里http://codepen.io/keephacking/pen/yJGVNx?editors=1010

答案 2 :(得分:0)

$scope.elements = [
    {
        age:20,
        dynamicallyUpdateVariableWithFollowingName:"age"
    }
];

<div ng-repeat="element in elements">
    <a href="" ng-click="element[element.dynamicallyUpdateVariableWithFollowingName] = 27 ">Update AGE</a>
    <h1>You age is {{element.age}}</h1>
</div>

答案 3 :(得分:0)

我无法理解你的动态变量概念,但如果它符合你的情况,请看这个

$scope.elements = [  {  age:17, Name:"age1" },
                     {  age:24, Name:"age2" },
                     {  age:33, Name:"age3" }];

$scope.changeage = function(name, age){
   angular.forEach($scope.elements, function(value, key) {
      if(value.Name == name){
        value.age = age;
      return;
    }
  });
}

您的HTML:

<div ng-repeat="element in elements">
    <a href="" 
       ng-click="changeage('age' +($index +1) , ($index +1) * 20)">
         Update AGE</a>
    <h1>You age is {{element.age}}</h1>
</div>

请参阅fiddle