1

angularjs を使用して API を統合しています。

テキストボックス内での使用に問題がありng-ifます。

以下はHTMLコードの私のスニペットです:

<input type="text" value="" data-ng-if="edit" ng-model="name">
<input type="text" value="" data-ng-if="!edit" ng-model="singleAppDetails.name">

ここで編集変数は、私のコントローラーにあるスコープ内にあり、次のように宣言しました:

$scope.edit = false;

したがって、edit が false の場合は bind を取得する必要がng-model="name" あり、edit が true の場合は bind を取得する必要がありますng-model="singleAppDetails.name" が、期待どおりにバインドしていません。

さらに$http.post、以下のようにデータをサーバーに投稿するために使用しています。

 $scope.addApp = function(){    
       $scope.apps = []; 
        $scope.apps.push({'name':$scope.name, 'domain':$scope.domain, 'appId':$scope.appId, 'secret':$scope.secret});
        // Writing it to the server
        //      
        var dataObj = {
                name : $scope.name,
                domain : $scope.domain,
                appId : $scope.appId,
                secret : $scope.secret
        };  
        var res = $http.post('http://192.168.1.30:8090/apps/', dataObj);
        res.success(function(data, status, headers, config) {
            $scope.message = data;
        });
        res.error(function(data, status, headers, config) {
            alert( "failure message: " + JSON.stringify({data: data}));
        });     
        // Making the fields empty
        //
       $scope.name='';
       $scope.domain='';
       $scope.appId = '';
       $scope.secret = '';
    };

ただし、これは常に null データを送信します。

4

2 に答える 2

2

ng-if独自のスコープを持っています。したがって、name最初の入力によって入力される属性は、コントローラー スコープではなく ng-if スコープにあります。

コントローラーが singleAppDetails を null 以外のオブジェクトに初期化する場合、2 番目の入力は正常に機能するはずです。

$scope.singleAppDetails = {};

経験則: ng-model には常にドットがあります。スコープ自体ではなく、スコープ内のオブジェクトを常に設定します。

于 2015-04-22T05:53:26.877 に答える