2013-08-31 14 views
5

Jak mogę skierować AngularJS do asymilacji atrybutu value w modelu? Każde pole, które podaję atrybut ng-model, natychmiast zastępuje jego value nic lub cokolwiek zdefiniowałem w kontrolerze. Oto niektóre kodu:AngularJS Użyj wartości wejściowej Atrybut

<form action="" method="post" ng-controller="PageCtrl"> 
    <input type="text" name="title" ng-model="title" value="Initial field value"> 
</form> 

A Javascript ...

function PageCtrl($scope, Slug) { 
    $scope.title = null; 
} 

Próbowałem nie ustawienie $scope.title, ustawienie go do innych rzeczy, ale bez względu na to, co zrobisz, value jest całkowicie ignorowany . Co mogę zrobić?

Odpowiedz

5

Tak, atrybut value jest ignorowany przez angularjs na rzecz ng-model. Lepiej po prostu usunąć wartość z danych wejściowych, aby uniknąć zamieszania.

Kątowym sposobem ustawiania wartości domyślnej byłoby ustawienie wewnątrz kontrolera wartości $scope.title = 'Initial field value' i jest to preferowany sposób uporządkowania rzeczy w jak największym stopniu. Jeśli nie jest to możliwe, możesz użyć ng-init na wejściu, aby zrobić to samo, np.

<input type="text" name="title" ng-model="title" ng-init="title = 'Initial field value'"> 
+0

W tym przypadku buduję formularz z Railsami. W jaki sposób polecilibyście otrzymanie tych danych do kontrolera w celu wypełnienia formularza? – Jonah

+0

@Jonah Nie jestem pewien, na czym polega problem? Możesz ustawić $ scope.title = "jakąś wartość domyślną" lub możesz ustawić atrybut zastępczy na danych wejściowych. Co tak naprawdę próbujesz osiągnąć? Powinieneś być w stanie użyć albo $ http, albo $ resource, aby komunikować się z warstwą usługi. – shaunhusain

+0

@shaunhusain Chcę móc dynamicznie wypełniać formularz bez żadnych Javascript. Wydaje się, że powinna to być podstawowa funkcjonalność :( – Jonah

Powiązane problemy