0

私は私のような多くの質問を見てきましたが、答えは私の問題を解決していないようです. 奇妙なことは、以前は機能していたことです。また、ダイアログに使用されるコントローラーにブレークポイントを配置すると、値を渡すために使用される変数が null ではありません。値は正しく渡されますが、まだ不明なプロバイダー エラーです

これは私の親コントローラーのコードです

 function addFaq(category, ev){

    $mdDialog.show({
        controller: 'newfaqController'
        , templateUrl: './app/components/faq/modals/newFaq.html'
        , parent: angular.element(document.body)
        , targetEvent: ev
        , bindToController: true
        , clickOutsideToClose: true
        , locals: {
            newFaqCategory: category
         }
        , controllerAs: vm
    }).then(function(result){
        if(result){
            vm.allFaqs.push(result);
        }
    });

    $scope.$watch(function () {
        return $mdMedia('xs') || $mdMedia('sm');
    }, function (wantsFullScreen) {
        $scope.customFullscreen = (wantsFullScreen === true);
    });
};

これらは私のダイアログコントローラーの最初の行です

 angular.module('MyApp').controller('newfaqController', ['$mdDialog', 'newFaqCategory', 'apiFactory', newfaqController]);
function newfaqController($mdDialog, newFaqCategory, apiFactory) {
4

1 に答える 1

2

$mdDialog を呼び出すコントローラーも vm として参照していますか? これと、$mdDialog のコントローラー参照としての dvm (ダイアログ ビュー モデル) との競合が発生しました。

これが答えです。「ControllerAs」をオプションから除外することもできます。ただし、モーダルコントローラーで vm を dvm に変更する必要がありました

 function addFaq(category, ev){

    $mdDialog.show({
        controller: 'newfaqController'
        , templateUrl: './app/components/faq/modals/newFaq.html'
        , parent: angular.element(document.body)
        , targetEvent: ev
        , bindToController: true
        , clickOutsideToClose: true
        , locals: {
            newFaqCategory: category
         }
    }).then(function(result){
        if(result){
            vm.allFaqs.push(result);
        }
    });

    $scope.$watch(function () {
        return $mdMedia('xs') || $mdMedia('sm');
    }, function (wantsFullScreen) {
        $scope.customFullscreen = (wantsFullScreen === true);
    });
};

そして私のモーダルコントローラー

angular.module('MyApp').controller('newfaqController', ['$mdDialog', 'newFaqCategory', 'apiFactory', newfaqController]);

function newfaqController($mdDialog, newFaqCategory, apiFactory) { var dvm = this;

于 2016-05-17T19:54:22.413 に答える