2015-11-12 84 views
0

我是Angular的新手。請考慮下面的一段代碼。什麼時候在AngularJS中創建一個範圍變量?

 <form name="newEventForm"> 
      <fieldset> 
       <label for="eventName">Event Name:</label> 
       <input id="eventName" required ng-model="event.name" type="text" placeholder="Name of your event..."> 


      <button ng-click="saveEvent(event, newEventForm)" type="submit" class="btn btn-primary">Save</button> 
      <button ng-click="cancelEdit()" type="button" class="btn btn-default">Cancel</button> 
     </form> 

我的問題是 - 爲什麼我們需要將事件參數傳遞給saveEvent函數?不使用ng-model通過Angular方的雙向綁定自動生成一個event.name變量?例如

<form name="newEventForm"> 
       <fieldset> 
        <label for="eventName">Event Name:</label> 
        <input id="eventName" required ng-model="event.name" type="text" placeholder="Name of your event..."> 


       <button ng-click="saveEvent(newEventForm)" type="submit" class="btn btn-primary">Save</button> 
       <button ng-click="cancelEdit()" type="button" class="btn btn-default">Cancel</button> 
      </form> 

在此代碼的第二個版本中,我沒有明確地注入事件作爲函數參數。但是,按提交時,這是saveEvent的代碼

$scope.saveEvent = function(newEventForm) 
    { 
     alert(1); 
     alert(newEventForm.$valid); 
     if(newEventForm.$valid) 
     { 
      window.alert('event ' + event.name + ' saved!'); 
     } 
    } 

並且事件未定義。它不應該被定義嗎?道歉,如果這個問題是一個新手的問​​題。試圖通過ng-model來了解如何創建範圍項目,以及雙向綁定是如何工作的。謝謝 !

UPDATE

衛生署,我應該使用$ scope.event。然後它工作。謝謝,就像我說的 - 這是新的,它只在我問了這個問題後纔想到:)

+0

不要使用事件作爲全局對象,而是作爲$ scope對象,而不是(在你的控制器中):'$ scope.event.name' – devqon

+0

yes!哈哈,我只是想出了自己。許多很多謝謝:) –

回答

1

視圖在關聯的作用域下創建事件變量,使用$ scope.event.name。 祝你好運

0

其實所有在html中指定的變量或模型都是scope變量。

<div ng-controller="myController" ng-init="name='Hello World'"> 
    {{name}} 
    <button ng-click="myFn(name)"> Click Me </button> 
</div> 

在本例中,我已開始了一個名爲name變量。它實際上是一個範圍變量。這段代碼其實很像

myApp.controller("myController", function($scope){ 
    $scope.name = "Hello World"; 

    $scope.myFn = function(param){ 
     // here you can see that your variable name passed from html is same as your scope variable 
     if(param == $scope.name){ 
      alert("Yes, two are equal !!!"); 
     } 
    } 
}); 

這兩個是一樣的。您可以使用html或js。