angularjs Вложенная задача Ng-Repeat с ng-моделью

Без пуризмов, я думаю, что лучший способ эмулировать скалярный аргумент по ссылке в Javascript использует объект, как говорит предыдущий ответ.

Однако я немного по-другому:

Я сделал вызов объекта внутри вызова функции, поэтому можно увидеть опорные параметры рядом с вызовом функции. Это увеличивает читаемость исходного кода

В объявлении функции я поместил свойства как комментарий по той же причине: читаемость.

var r;

funcWithRefScalars(r = {amount:200, message:null} );
console.log(r.amount + " - " + r.message);


function funcWithRefScalars(o) {  // o(amount, message)
  o.amount  *= 1.2;
  o.message = "20% increase";
}

В приведенном выше примере null указывает явно выходной опорный параметр.

Выход:

240 - 20% Increase

На стороне клиента console.log следует заменить на alert.

★ ★ ★

Другой способ, который может быть еще более читабельным:

var amount, message;

funcWithRefScalars(amount = [200], message = [null] );
console.log(amount[0] + " - " + message[0]);

function funcWithRefScalars(amount, message) {  // o(amount, message)
   amount[0]  *= 1.2;
   message[0] = "20% increase";
}

Здесь вам даже не нужно создавать новые имена фиктивных имен, например r выше.

0
задан Ironsun 15 January 2019 в 11:55
поделиться

1 ответ

Вместо использования track[$index].value вы должны использовать step, а также отслеживать ngRepeat по $index

var app = angular.module("app", []);

app.controller("MainCtrl", function($scope) {
  $scope.noteMatrix = [
    [false, false, false],
    [false, true, false],
    [false, false, false]
  ];
});
<html ng-app="app">

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>

</head>

<body ng-controller="MainCtrl">
  {{noteMatrix}}
  <table>
    <tbody>
      <tr ng-repeat="track in noteMatrix track by $index">
        <td>-{{$index}}-</td>
        {{track}}
        <td ng-repeat="step in track track by $index">
          <input type="checkbox" ng-model="step"> {{step}}
        </td>
      </tr>
    </tbody>
  </table>
</body>

</html>
[1110 ]

0
ответ дан Saeed.Ataee 15 January 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: