我是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。然後它工作。謝謝,就像我說的 - 這是新的,它只在我問了這個問題後纔想到:)
不要使用事件作爲全局對象,而是作爲$ scope對象,而不是(在你的控制器中):'$ scope.event.name' – devqon
yes!哈哈,我只是想出了自己。許多很多謝謝:) –