0

これが私のフォームの選択コントロールです:

<select ng-model="truckMfg.truckMfgs" ng-options="truckMfg.Name for truckMfg in truckMfgs">
   <option value="" selected>Select Truck Manufacturer ..</option>  
</select>

私は、ユーザーがまだテーブルにないMfgsを追加できるようにするモーダルを持っています。これが私のコントローラーです:

function TruckMfgCtrl($scope, $routeParams, $http, API, $location)  {

$scope.truckMfgs = API.GetTruckMfgs(); // <-- this works at initialization

$scope.save = function () {
    $http.post('/api/TruckMfgs/', $scope.truckMfg)  // data does get saved corectly
        .success(function () {
        })
        .error(function (data) {
            alert(data);
        });

    setTimeout(function () {
        $scope.truckMfgs = API.GetTruckMfgs(); // <-- this is not working
        $scope.$apply();
    }, 1000);
};

}

私が達成しようとしていること:

ユーザーが新しいメーカーを追加してモーダルが閉じた後、selectコントロールを新しいメーカーのリストに更新する必要があります。addtl mfgがテーブルに追加されていますが、selectコントロールに表示されていません。フォームを更新すると新しいデータが表示されますが、もちろんそれは私が望むものではありません。

何か案は?

マーク・ラジコック

私はあなたの助けに感謝します。私はこれを試しましたが、機能しませんでした:

$scope.save = function () {
    $http.post('/api/TruckMfgs/', $scope.truckMfg)
        .success(function () {
            $scope.truckMfgs.append($scope.truckMfg);
            console.log($scope.truckMfg);
        })
        .error(function (data) {
            alert(data);
        });
};

敬具、あなたが推奨しているコードを見せてくれませんか?ありがとう

(追記:あなたのプロフィールをチェックしました。私もcawfeeを飲み、dawghterをmawlに持っていきますが、Norkではありません):)

4

1 に答える 1

1

I don't see any need to call GetTruckMfgs() in save(), because you already have the data you need to add to your truckMfgs list. So instead, have save() add/append $scope.truckMfg to $scope.truckMfgs. This way you avoid another trip to the server.

You could do this in your success() callback, if you want to ensure that the data was successfully post'ed before you update your select list. If you want your UI to update faster (i.e., be more responsive), you could do this before (or after) the post() call in your save function, but then handle any errors in your error callback (e.g., remove the item from the select list if post() failed).

于 2013-03-02T22:01:45.217 に答える