2015-04-19 4 views
1

Я столкнулся с проблемой, когда использовал директиву angularjs. Вот проблема:angularjs директива scope '@' опции

directives.js:

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

    directives.directive('list', ['$templateCache', function() { 
     restrict: 'E', 
     scope: [ 
      names: '@' 
     ], 
     template: '<div>'+ 
        '<div ng-repeat="name in names">{{name}}</div>'+ 
        '{{names}}'+ 
        '</div>', 
     replcae: true 
    }]); 

example.html:

...... 
    <div ng-controller="nameCtrl"> 
     <list names="{{names}}"></list> 
    </div> 
    ...... 

controllers.js

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

    controller.controller('nameCtrl', ['$scope', function($scope) { 
     $scope.names = ['foo', 'bar']; 
    }]); 

Но когда я открыл example.html , он печатается только:

["foo","bar"] 

не то, что я должен:

foo 
    bar 
    ["foo","bar"] 

Итак, в чем проблема?

ответ

0

@ используется для передачи строки в соответствии с директивой. Таким образом, ваш массив преобразуется в JSON угловым, а строка JSON передается в директиву.

Если вы хотите передать объект или массив, используйте =.

+0

спасибо! –

Смежные вопросы