Я новичок в Угловом. Пожалуйста, рассмотрите следующий фрагмент кода.Когда переменная области видимости создается в 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 auto генерировать переменную 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>
В этой второй версии кода я явно не вводил событие в качестве параметра функции. Однако при нажатии submit, это код для saveEvent
$scope.saveEvent = function(newEventForm)
{
alert(1);
alert(newEventForm.$valid);
if(newEventForm.$valid)
{
window.alert('event ' + event.name + ' saved!');
}
}
и событие не определено. Разве это не должно быть определено? Извините, если вопрос является вопросом новичка. Просто пытаюсь понять, как объекты области создаются с помощью ng-модели и как работает двусторонняя привязка. Благодаря !
UPDATE
Doh, я уже использовал $ scope.event. Тогда это работает. Спасибо, как я уже сказал, это новое, и это только осенило меня после того, как я задал вопрос :)
не использовать событие как глобальный объект, а вместо него вместо объекта $ scope (в вашем контроллере): '$ scope.event.name' – devqon
yes! ха-ха, я просто понял это сам. Тем не менее многие благодарны :) –