#angularjs
#angularjs
Вопрос:
У меня есть поле выбора html. Я хочу использовать атрибут selecteditems pid в качестве значения по умолчанию для текстового поля ввода. Я попробовал следующие два способа
Мое поле выбора
<select ng-model="selectedProduct" ng-options="product.pname for product in products"></select>
Способ 1:
<input type="text" data-ng-model="neworder.pid" ng-init="neworder.pid={{selectedProduct.pid}}" required />
Способ 2:
<input type="text" data-ng-model="neworder.pid" required />
и в контроллере
$scope.neworder.pid = $scope.selectedProduct.pid
Но не удалось заставить их оба работать. Как это сделать правильно?
Обновить
Моя форма, содержащая поле выбора.
<form name="addOrder" data-ng-show="addMode" style="width:600px;margin:0px auto;">
<select ng-model="selectedProduct" ng-options="product.pname for product in products"></select>
{{selectedProduct.pid}}
<label>PID:</label><input type="text" data-ng-model="neworder.pid" ng-init="neworder.pid={{selectedProduct.pid}}" required />
<label>OID:</label><input type="text" data-ng-model="neworder.oid" required />
<label>QTY:</label><input type="text" data-ng-model="neworder.qty" required />
<label>TOTAL:</label><input type="text" data-ng-model="neworder.total" required />
<br />
<!-- <span class="error" data-ng-show="addCustomer.$error.required">Required!</span>-->
<br />
<input type="submit" value="Add" data-ng-click="add()" data-ng-disabled="!addOrder.$valid" class="btn btn-primary" />
<input type="button" value="Cancel" data-ng-click="toggleAdd()" class="btn btn-primary" />
<br /><br />
</form>
добавьте функцию в контроллер
$scope.add = function () {
$http.post('/api/OrderDetails/', this.neworder).success(function (data) {
alert("Added Successfully!!");
$scope.addMode = false;
$scope.orders.push(data);
}).error(function (data) {
$scope.error = "An Error has occured while Adding product! " data;
});
};
Ответ №1:
Почему бы просто не привязать к selectedProduct
?
Вот так:
<input type="text" ng-model="selectedProduct.pid" name="pid">
Это работает, как вы можете видеть здесь.
Редактировать
Используйте ng-change
вот так:
<select ng-options="..." ng-change="newOrder.pid=selectedProduct.pid" ng-model="..."></select>
и
<input type="text" ng-model="newOrder.pid">
Комментарии:
1. потому что мне нужно, чтобы имя модели было ‘neworder.pid’, чтобы я мог использовать все значения формы в моем контроллере с помощью
this.neworder
позже. Я добавил свою форму, чтобы вы могли посмотреть.2. поэтому используйте
ng-change
с функцией, которая устанавливаетneworder.pid
значениеselectedProduct.pid
. это должно сработать
Ответ №2:
$http.get(некоторый текст здесь) .success(функция (некоторый текст здесь) {
$scope.neworder ={name of your input field: 'text you want to show inside input field'};
});
Просто помните, вы должны записать это внутри функции $http.get(), так как она будет извлекать значение перед вводом в него от пользователя