2014-02-23 41 views
1
<form name="{{ formname }}" novalidate> 
    <input type="text" ng-model="first_name" required> 
    <input type="text" ng-model="last_name" required> 
    <input type="text" ng-model="email" required> 
    <span class="error" ng-show="formname.$invalid">Fill in required fields.</span> 
    <button type="submit"></button> 
</form> 

我想驗證窗體使用Angular的內置驗證,但因爲formname是由範圍內傳入的文本動態設置我不知道如何調用它。上述嘗試不起作用。驗證指令中的動態名稱

回答

1

你可以在控制器的幫助下做到這一點。定義另一個變量(f在下面的例子),觀賞formname並相應更新f

.controller("...", function($scope) { 
    $scope.first_name = ""; 
    $scope.formname = "fff"; 
    $scope.f = null; 
    $scope.$watch("formname",function(newval,oldval,scope) { 
     scope.f = scope[newval]; 
    }); 
}); 

見琴:http://jsfiddle.net/T7vuD/

+0

這是一個不錯的解決方法。謝謝:) – Plasticated

+0

是的,這是解決方法 - 是啊。按-ish我的意思是我不認爲有這樣做的直接方式(換句話說,沒有什麼*但是解決這個問題的方法)。事實上,起初我儘管簡單地用'ng-show =「[formname]。$ invalid」'可以工作(即隱式評估'$ scope [formname]')。它沒有。 –