2017-03-01 2 views
0

페이지에 index.html이라는 페이지가 있는데이 페이지에 add-circle-form이라는 구성 요소가 삽입되었습니다.

원하는 작업 :ng-model에서 정의되지 않은 값입니다. 오류 : 표현식에서 '정의되지 않은'표현식 ... 할당 할 수 없음

add-circle-form.js에 사용자 선택 사항을 저장하고 add-circle-form에서 옵션 목록을 클릭하면 index.js로 데이터를 전달하고 싶습니다. .html.

index.html을

<add-campaign-form 
on-submit="submit()" 
selectedCircles="selectedCircles"></add-campaign-form> 

하는 index.js (index.html을의 컨트롤러) : 아래

Error: [$compile:nonassign] Expression 'undefined' in attribute 'selectedCircles' used with directive 'addCircleForm' is non-assignable! 
http://errors.angularjs.org/1.5.11/$compile/nonassign?p0=undefined&p1=selectedCircles&p2=addCampaignForm 
at angular.js:68 
at parentSet (angular.js:10216) 
at parentValueWatch (angular.js:10229) 
at regularInterceptedExpression (angular.js:16355) 
at Scope.$digest (angular.js:17828) 
at Scope.$apply (angular.js:18102) 
at HTMLElement.s (angular-material.min.js:11) 
at defaultHandlerWrapper (angular.js:3546) 
at HTMLElement.eventHandler (angular.js:3534) 

내 코드입니다 : 내가 드롭 다운 목록에서 클릭 할 때, 오류가 발생했습니다 어디 내가 객체를 정의 selectedCircles 여기 :

function($scope) { 
    $scope.selectedCircles = {}; 
} 

부가 원 - form.html (성분)

<md-input-container> 
    <label>Target Circles</label> 
    <md-select ng-model="$ctrl.selectedCircles" 
       md-on-close="clearSearchTerm()" 
       multiple> 
     <md-select-header> 
     <input ng-model="searchTerm" 
       type="search" 
       placeholder="Search for a circle.." 
       class="target-circles-header-searchbox md-text"> 
     </md-select-header> 
     <md-optgroup label="circles"> 
     <md-option ng-value="circle" ng-repeat="circle in circles | 
      filter:searchTerm">{{circle}}</md-option> 
     </md-optgroup> 
    </md-select> 
    </md-input-container> 

부가 원 - form.js (ADD-form.html 써클의 제어기)를 추가 써클 형태에

$scope.circles = ['Circle A', 'Circle B', 'Circle C', 'Circle D']; 
    $scope.searchTerm; 
    $scope.clearSearchTerm = function() { 
     $scope.searchTerm = ''; 
    }; 
    $element.find('input').on('keydown', function(ev){ 
     ev.stopPropagation(); 
    }); 

바인딩 의 .js

bindings: { 
     onSubmit: '&', 
     selectedCircles: '=' 
    } 

나는 문제가 나는 NG 모델 = "$ ctrl.selectedCircles"를 사용하고 있다고 생각하지만 난 이미 정의한대로 나는 $ ctrl.selectedCircles에 값을 할당 할 수 없습니다 내가 왜 아무 생각이 없다 양방향으로 묶었습니다. 데이터를 index.js로 전달하는 방법을 제안 해 주시겠습니까?

답변

1

당신은 index.html을에 selected-circlesselectedCircles을 변경해야

<add-campaign-form 
on-submit="submit()" 
selected-circles="selectedCircles"></add-campaign-form> 
+0

네, 나는이 솔루션의 작업을 수행하는 방법을 알 수 있습니다, 지금 나를 위해 작동? 나는 왜 거기에 선정 된 원을 놓을 수 없는지 의미합니까? – nanopotato

+0

@nanopotato 확인 this http://stackoverflow.com/questions/25807763/custom-angular-directive-including-a-dash-in-the-name-doesnt-work?answertab=active#tab-top –