2015-02-02 3 views
1

내 컨트롤러에 배열이 포함되어 있습니다. 배열의 각 항목은 템플릿이있는 지시문입니다. 새로운 광고문을 만들 때 지시어에 대한 가치를 얻으려면 어떻게해야합니까? 새 항목을 푸는 경우 지시문에 ID를 보내려고합니다.변수를 지시문에 전달 (배열 푸시)

컨트롤러

(function() { 
    'use strict'; 

angular 
    .module('app') 
    .controller('dashboardController', dashboardController); 

dashboardController.$inject = ['$scope', '$timeout', '$state', 'apiService']; 

function dashboardController($scope, $timeout, $state, apiService) { 

$scope.newCMP = newCMP; 
$scope.openCMPArray = []; 

function newCMP() { 
    $scope.openCMPArray.push({id:"3"}); 
} 


} 

})(); 

지침

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .directive('gpCmpForm', cmpForm); 

    function cmpForm() { 
    return { 
     scope: { 
     id: '=id' //I've tried doing a lot of different mapping here 
     }, 
     restrict: 'A', 
     templateUrl: '/app/views/cmpForm.html', 
     controller: function ($scope) { 
     $scope.test = "342"; 
     } 
    } 
}; 
})(); 

어떻게 만들 때 지시어는 ID를 얻을 수 있습니까?

+0

HTML의 모양은 어떻습니까? 그것이 바로이 id를 지시어 범위에 바인딩하기 때문입니다. –

답변

2

지시어를 생성하는 컬렉션을 반복하는 경우 새 요소를 컬렉션으로 밀어 넣기 만하면 AngularJS가 변경 사항을 선택하고보기를 처리합니다. - 예를 들면 그래서

이 당신의 HTML 인 경우 :

<div ng-controller="mycontroller"> 
    <a href="#" ng-click="addPerson()">click to add person</a> 
    <div ng-repeat="person in people"> 
     <div persondirective person="person"></div> 
    </div> 
</div> 

당신은 persondirective이 컬렉션의 각 사람을 위해 만든 것을 알 수있다. 당신은 사람들이 수집에 사람을 누르면, 새로운 지시어는 그 사람을 위해 표시됩니다 : 당신이 어떻게 작동하는지 설명하기 위해

$scope.addPerson = function() { 
    $scope.people.push({ name: 'new guy' }); 
}; 

나는 바이올린을 만들었습니다 또한 http://jsfiddle.net/k7qsxo5e/

- 당신은 아마 원하는 '='바인딩을 사용합니다. 이것은 양방향 바인딩입니다. 즉, 지시문에 표시된 사람이 컨트롤러에서 변경되면 목록이 업데이트됩니다. 또한 지시문이 사람을 변경하면 컨트롤러의 컬렉션이 업데이트됩니다.

+0

감사합니다. 바이올린에 감사드립니다. 나는 아직도 배울 것이 조금있는 것을 본다. – Ricka

관련 문제