2017-02-22 20 views
0

我是Angularjs的初學者,我想知道在以下Angular 1.3.0代碼中字段的定義。我在頁面上使用了一個依賴的ngMessages,我從這個代碼獲取表單。但我無法理解這裏所指的字段。我的意思是,我可以弄清楚它指的是什麼(它下面的div),但我們究竟在哪裏做了關係?我只能從角messages.js得到了其中是在ng-model =「field」中定義的字段

「我們有一個文本輸入名爲myField這勢必會使用{@link ngModel ngModel}指令範圍變量場。」

所以我也記錄了$範圍,並沒有發現任何與字段相關的內容。請,有人解釋我是如何與下面的div相關的。

<form name="myForm"> 
    <label> 
     Enter text: 
     <input type="email" ng-model="field" name="myField" required maxlength="15" /> 
    </label> 
    <div ng-messages="myForm.myField.$error" role="alert"> 
     <div ng-message="required">Please enter a value for this field.</div> 
     <div ng-message="email">This field must be a valid email address.</div> 
     <div ng-message="maxlength">This field can be at most 15 characters long.</div> 
    </div> 
</form> 
+0

https://docs.angularjs.org/api/ng/指令/ ngModel – Mistalis

+0

這是我在[plunker]上的整個代碼(https://plnkr.co/edit/oRj1rJRGclwcOscKq6xO?p=preview) – Ravy

回答

0

NG-模型結合的HTML文本字段angularjs控制器,所以這裏

NG-模型綁定的電子郵件文本字段的值與$範圍。在控制器領域,這裏是示例代碼:

的html代碼:

<html ng-app="myApp"> 
<div data-ng-controller="your-controller"> 
<form name="myForm"> 
    <label> 
    Enter text: 
    <input type="email" ng-model="field" name="myField" required  maxlength="15" /> 
    </label> 
    <div ng-messages="myForm.myField.$error" role="alert"> 
    <div ng-message="required">Please enter a value for this field.</div> 
    <div ng-message="email">This field must be a valid email address.</div> 
    <div ng-message="maxlength">This field can be at most 15 characters long.</div> 
    </div> 
    </form> 
</div> 
</html> 

控制器代碼:

var myApp=angular.module('myApp'); myApp.controller('your-controller',function($scope){ console.log($scope.field); });

+0

由於在創建控制器時未在輸入中設置'$ scope.field',所以'console.log()'會打印未定義的''。 – Mistalis

1

每當你定義的形式(HTML)的任何ngModel沒有控制器initiliazing它,

ngModel成爲與模板的controller相關$scope一部分。

在你的情況下,它看起來像你的ngModelfield沒有在控制器中初始化。

但其映射控制器的$scope的一部分。

<input type="email" ng-model="field" name="myField" required maxlength="15" /> 

這裏namengModel是相同的。

在角度形式中,您可以使用表單名稱訪問您的input control

myForm.myField //your_form_name.form_field_name 

如果你想檢查$scope的內容,那麼你應該打印它在控制器。

1

ngModel docs

ngModel指令結合的inputselecttextarea(或定製的形式 控制),以在使用NgModelController範圍,這是 創建和此指令露出的屬性。


當你寫<input ng-model="field"/>fields被綁定到你的控制器($scope.fields)的範圍

如果您沒有在控制器中初始化它,fields可能是undefined

+0

我剛剛在[plunker](https:// plnkr)上添加了一個鏈接到我的代碼。 CO /編輯/ oRj1rJRGclwcOscKq6xO?p =預覽)。你可以在那裏看到它的工作原理,並且我已經初始化了我的控制器,但是它的值是不確定的。這就是我的問題所在,當文檔清楚地說它被綁定到我的控制器的範圍時,爲什麼這個值是未定義的。 – Ravy

相關問題