2015-05-05 24 views
7

Tôi muốn kiểm tra xem một biểu mẫu có hợp lệ bên trong bộ điều khiển góc hay không. Điều này có vẻ đơn giản khi sử dụng phạm vi $, nhưng tôi không thể làm cho nó hoạt động với cú pháp 'controller as'.

Khi tôi cố truy cập biểu mẫu. $ Hợp lệ Tôi nhận được thông báo lỗi "Không thể đọc thuộc tính '$ hợp lệ' không xác định".

plunkr: http://plnkr.co/edit/w54i1bZVD8UMhxB4L2JX?p=preview

HTML

<div ng-app="demoControllerAs" ng-controller="MainController as main"> 
    <form name="contactForm" novalidate> 
    <p> 
     <label>Email</label> 
     <input type="email" name="email" ng-model="main.email" required /> 
    </p> 
    <p> 
     <label>Message</label> 
     <textarea name="message" ng-model="main.message" required></textarea> 
    </p> 
    <input type="submit" value="submit" ng-click="main.submit()" /> 
    </form> 
</div> 

JS

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

app.controller('MainController', [function() { 
    var main = this; 

    main.submit = function() { 
     var isValid = main.contactForm.$valid; 
     console.log(isValid); 
    }; 
}]); 

Trả lời

9

Bạn có thể làm như @ ons-jjss gợi ý nhưng nếu bạn không muốn tiêm $scope vào bạn điều khiển, sau đó chỉ cần thay đổi tên form của bạn như

<form name="main.contactForm" novalidate> 

và nó sẽ làm việc như một nét duyên dáng .

+0

Cảm ơn, bây giờ rõ ràng bạn đã chỉ ra nó. – ChaoticNadirs

+0

giải pháp tốt :) –

3

Bạn cần phải sử dụng theo cách này: $scope.contactForm.$valid

EDIT

Để thực hiện cú pháp trên, $ scope cần được đưa vào bộ điều khiển.

app.controller('MainController', function($scope) { 
    //code 
} 
+0

không làm việc. $ phạm vi không được định nghĩa http://plnkr.co/edit/HIwmTvLs0wg6Kt7244vM?p=preview – ChaoticNadirs

+0

. tôi đoán bạn đã làm không t tiêm $ phạm vi. app.controller ('MainController', chức năng ($ scope) {// code} –

-1

Bạn có thể vượt qua hình thức của bạn như một tham số để hàm số nộp như ng-click = "main.submit (contactForm)

và sau đó xác nhận nó trong phương pháp điều khiển

0

Bạn cần phải sử dụng main.contactForm trong tên thuộc tính hình thức sau đó nó được giải quyết. Xem này

`http://plnkr.co/edit/us8MKU3LZ7pnLV66xIrv?p=preview` 
Các vấn đề liên quan