使用ng-click指令向(空)范围数组添加新条目

时间:2016-06-07 21:02:44

标签: arrays angularjs push

我的范围不包含" notYetExistingArray"在生成时。

通过按钮,我想添加数组加上第一个条目。 然后每次按下相同的按钮都应该添加另一个条目。

不幸的是,我不清楚如何处理它。

目前我有:

<button type="button" ng-click="notYetExistingArray.unshift({})">

如果范围已包含对象&#34; notYetExistingArray&#34;类型array = []我可以轻松添加具有上述功能的条目。

有关如何做的任何建议吗?

3 个答案:

答案 0 :(得分:1)

ng-click指令调用控制器函数,而不是尝试在标记中执行所有操作。它可以包括检查数组是否存在,并在需要时创建它。

<button type="button" ng-click="addThis(thing)">

在控制器中:

ctrl.addThis = function(thing) {
    if (ctrl.myArray === undefined) {
        ctrl.myArray = [];
    }

    myArray.unshift(thing);
};

请注意,我在此处使用controllerAs语法,因此ctrl可能会$scope

答案 1 :(得分:0)

您可以在执行此操作之前初始化阵列,例如:

<button type="button" ng-init="notYetExistingArray=[]" ng-click="notYetExistingArray.unshift({})">

查看ng-init https://docs.angularjs.org/api/ng/directive/ngInit

的文档

答案 2 :(得分:0)

一个好方法是在 public void newNum(View resetB){ TextView numOne = (TextView) findViewById(R.id.numOne); TextView numTwo = (TextView) findViewById(R.id.numTwo); TextView ans = (TextView) findViewById(R.id.ans); Button reset = (Button) resetB; Random rand = new Random(); int ranOne = rand.nextInt(50) + 1; int ranTwo = rand.nextInt(50) + 1; int ansNum = (ranOne/2) + ranTwo; numOne.setText("" + ranOne); numTwo.setText("" + ranTwo); ans.setText("" + ansNum); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); newNum(resetB); } 指令上绑定一个函数,该指令将执行测试以检查数组是否存在。

控制器

ngClick

Html

function foo(item) {
  //if my array does not exist
  if (!$scope.myArray) {
    //create the array
    $scope.myArray = [];
  }
  //Here, we can add some data to our array, we are sure that the array exist
  $scope.myArray.unshift(item);
}

$scope.foo = foo;

随意查看Working Plunker