1

編集: プランカーは動作していますが、実際のコードは動作していません: http://plnkr.co/edit/5oVWGCVeuTwTARhZDVMl?p=preview

サービスには典型的な getter\setter が含まれていますが、それ以外は正常に機能するため、TLDR を回避するためのコードは投稿しませんでした。

TLDR バージョン: AJAX で取得した値をテキスト領域の ngModel に ng-init しようとすると、要求は正しい値で解決されますが、テキスト領域は空のままです。

親コントローラー関数 (サービスと対話):

$scope.model.getRandomStatus = function(){
    var deffered = $q.defer();
var cid = authService.getCompanyId();

var suggestions = companyService.getStatusSuggestions(cid);
if(suggestions && suggestions.length > 0){
        deffered.resolve(suggestions[Math.floor(Math.random(suggestions.length) + 1)].message);
        return deffered.promise;//we already have a status text, great!
    }

    //no status, we'll have to load the status choices from the API
    companyService.loadStatusSuggestions(cid).then(function(data){
        companyService.setStatusSuggestions(cid, data.data);
        var result = data.data[Math.floor(Math.random(data.data.length) + 1)];
        deffered.resolve(result.message);   
    },
    function(data){
        _root.inProgress = false;
        deffered.resolve('');
        //failed to fetch suggestions, will try again the next time the compnay data is reuqired
    });
    return deffered.promise;
}

子コントローラー:

.controller('shareCtrl', function($scope){
    $scope.layout.toggleStatusSuggestion = function(){
         $scope.model.getRandomStatus().then(function(data){
            console.log(data);//logs out the correct text
            //$scope.model.formData.shareStatus = data;//also tried this, no luck
            return data.message;
         });
    $scope.model.formData.shareStatus = $scope.layout.toggleStatusSuggestion();//Newly edited
    }
});

HTML:

<div class="shareContainer" data-ng-controller="shareCtrl">
 <textarea class="textAreaExtend" name="shareStatus" data-ng-model="model.formData.shareStatus" data-ng-init="model.formData.shareStatus = layout.toggleStatusSuggestion()" cols="4"></textarea>
</div>
4

2 に答える 2

0

$formatters を介してモデルの変更を監視し、それを 80 文字 (twitter) に制限するカスタム検証ディレクティブがあったことが判明しました。非常に愚かですが、誰にでも起こり得ることです。それにいくつかの変更を加える必要があったので、他の誰かに起こった場合に備えて覚えておく価値があります.

于 2013-10-26T20:55:10.510 に答える