2014-01-18 2 views
0

내 AngularJS와 다음 실행 때 그 오류가 발생 정의되지 않은AngularJS와는의 밀어 정의되지 않은

방법 '푸시'를 호출 할 수 없습니다 :

$scope.ok = function() { 
    $modalInstance.close(); 
    $scope.key.push({ title: '', gps:'', desc:''}); 
}; 

내가 내 $scope.key = []; 직후 선언 내 .controller 등 응용 프로그램의 다른 부분에서 $scope.key을 사용할 수 있어야합니다. 누군가 내가 이것을 선언해야한다고 지적 해 주시겠습니까?

$scope.ok은 입력 필드에서 데이터를 가져 오는 내 저장 버튼이고 $scope.plotmarkers은 푸시 된 입력에서 데이터를 가져 오는 데 사용합니다.

app.controller('MenuSideController', ['$scope','$modal','$log', function($scope, $modal, $log) { 

    $scope.key = []; 

    $scope.createmarker = function() { 
     var modalInstance = $modal.open({ 
      templateUrl: 'template/modal-add-marker.html', 
      controller: ModalInstanceCtrl, 
      resolve: {} 
     }); 
     modalInstance.result.then(function (selectedItem) { 
     }, function() { 
      $log.info('Modal dismissed at: ' + new Date()); 
     }); 
    }; 
    var ModalInstanceCtrl = function ($scope, $modalInstance) { 
     $scope.ok = function() { 
      $modalInstance.close(); 
      $scope.key.push({ title: '', gps:'', desc:''}); 
     }; 

     $scope.cancel = function() { 
      $modalInstance.dismiss('cancel'); 
     }; 
    }; 


    $scope.plotmarkers = function() { 
     console.log($scope.key); 
    }; 
}]); 
+1

$ scope (함수 매개 변수로부터)에 대한 문서를 보면 $ function의 외부 범위를 음영 처리합니다. –

답변

0

범위를 $modal.open으로 전달해야합니다. 그렇게하지 않으면 컨트롤러 범위의 자식이 아닌 루트 범위가 기본값이되므로 key이 부모 범위에 정의되어 있지 않습니다. 컨트롤러의 범위 하위에 을 $model.open의 매개 변수로 사용하여 전달할 수 있습니다. 자세한 내용은 the docs을 참조하십시오. 행운을 빕니다!

-1

저는 여러분이 $ modal을 약간 부적절하게 사용하고 있다고 생각합니다.

여기에는 컨트롤러가 두 개 있습니다. 하나는 응용 프로그램 논리 용이고 다른 하나는 모달 창 자체입니다. 모범 사례에 따르면 서로 다른 컨트롤러 사이에서 직접 상호 작용하면 안됩니다 (부모 - 자식 지시문을 사용한 경우는 제외이지만 정직하게 말하면 직접 상호 작용이 아니라 링커 기능이 부모 지시문에서 컨트롤러를 사용함). 일반적으로 컨트롤러 간의 상호 작용 대신 서비스를 사용해야합니다. 그것은 단지 추가 노트입니다. 실제로 여러 지정이 해결 속성을 사용해야합니다 모달 창으로 컨트롤러에서 정보를 전달하려면

  • : - 귀하의 질문에 관련이 무엇

    두 가지 염두에 두어야 여기 일이 함수를 호출하여 데이터를 얻은 다음 모달 창 컨트롤러에 함수 매개 변수로 주입합니다. 이렇게하면 주 컨트롤러에서 일부 데이터를 전달할 수 있습니다.

  • 결과를 다시 전달해야한다면 $ modalInstance.result.then (function (result) {...})를 사용하여 promise 인 모달 인스턴스의 result 속성을 사용해야한다.) 이것을 전달하려면 모달의 객체는 결과와 함께 다음과 같은 매개 변수로 닫을 수 있습니다. $ modalInstance.close (result);

희망이 도움이됩니다. 더 자세한 내용은 $ modal : Angular Bootstrap

관련 문제