在angularjs中设置另一个模型的输入文本框值

时间:2014-07-01 10:01:36

标签: 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;

            });
        };

2 个答案:

答案 0 :(得分:1)

为什么不绑定到selectedProduct

像这样:

<input type="text" ng-model="selectedProduct.pid" name="pid">

这可以看作here

修改

像这样使用ng-change

<select ng-options="..." ng-change="newOrder.pid=selectedProduct.pid" ng-model="..."></select>

<input type="text" ng-model="newOrder.pid">

答案 1 :(得分:1)

$ http.get(这里的一些文字)     .success(函数(这里的一些文字){

$scope.neworder ={name of your input field: 'text you want to show inside input field'};

    });

请记住,你必须在$ http.get()函数中写这个,因为它会在从用户输入之前获取值