2016-04-20 36 views
0

我有一個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. 
}); 

問題控制器是我想要得到的基於變量的形式,因爲名稱本身可能稍後會更改。

+0

這裏存在幾個誤區,其中之一是,$範圍是不是一個數組,爲此$範圍[「變種」]不能正常工作。你應該爲此創建自己的數組,例如$ scope.arr = []; – thegio

+0

我發現我必須在括號內使用''scope.formName'',像這樣:''scope [$ scope.formName]'',這和寫''scope.aFormName''是一樣的在這種情況下。這不會導致任何錯誤。 – John

回答

0

我忘了在變量名前面加上$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 
    });