2014-12-29 1 views
2

속성을 통해이 복잡한 객체 배열을 지시문에 전달하는 데 문제가 있습니다. 내가 뭘 잘못하고 왜 잘못 된거야? foos를라는 이름의 범위 속성이 없습니다각도 JS 및 지시문에 속성으로 복잡한 객체 배열 전달

jsfiddle

잘라 내기 및 붙여 넣기 코드

<div ng-controller="MyCtrl"> 
    <pass-object obj="obj"></pass-object> 
</div> 

var myApp = angular.module('myApp',[]); 

myApp.directive('passObject', function() { 
    return { 
     restrict: 'E', 
     scope: { obj: '=' }, 
     template: '<div ng-repeat="foo in foos">Hello, {{foo.prop}}!</div></div>' 
    }; 
}); 

myApp.controller('MyCtrl', function ($scope) { 
    $scope.obj = [{ prop: "hello" }, {prop: "world"}]; 
}); 

답변

5

지침 템플릿에 foos을 반복하고 있습니다. 당신은 거짓말을하지 않았고, 당신은 obj을 통과했습니다. 이 시도 :

myApp.directive('passObject', function() { 
    return { 
     restrict: 'E', 
     scope: { obj: '=' }, 
     template: '<div ng-repeat="o in obj">Hello, {{o.prop}}!</div></div>' 
    }; 
}); 

Updated fiddle.

3

, 그것은 당신의 범위를 정의 scope: { obj: '=' }에 따라 obj을해야한다 :

template: '<div ng-repeat="foo in obj">Hello, {{foo.prop}}!</div></div>' 

또는 변경할 수 있습니다 범위 설정 대상 :

scope: { foos: '=obj' },