У меня есть html-фрагмент:
<div ng-controller="FormCtrl">
<form name="{{formName}}"></form>
</div>
и такой контроллер
angular.module('myApp')
.controller('FormCtrl', function ($scope) {
$scope.formName = "aFormName";
$scope.aFormName.$dirty = false // this works
$scope[formName].$dirty = false // does not work, I get undefined.
});
Проблема в том, что я хочу получить форму на основе переменной, потому что само название может измениться позже.
Я забыл добавить $scope
перед именем переменной, когда пытался получить форму. Я должен сделать это следующим образом: $scope[$scope.formName].$dirty = false
angular.module('myApp')
.controller('FormCtrl', function ($scope) {
$scope.formName = "aFormName";
$scope.aFormName.$dirty = false // this works
$scope[$scope.formName].$dirty = false // Now it works
});
$scope.formName
внутри скобок, например:$scope[$scope.formName]
, что аналогично написанию$scope.aFormName
в этом случае. И это не вызовет никаких ошибок.