2016-02-07 3 views
0

в HTML я называю свою директиву с: <div godata-pagination count="{{pagination.count}}" size="{{pagination.size}}" page="{{pagination.page}}"></div>директива ссылка ATTRS не работает

тогда моя директива выглядит внутри:

function link(scope, element, attrs) { 
    console.log('attrs: ' + attrs.size); 
    scope.pagCount = attrs.count; 
    scope.pagPage = attrs.page; 
} 
return { 
    restrict: 'A', 
    transclude: true, 
    scope: { 
     count: '@', 
     size: '@', 
     page: '@' 
    }, 
    templateUrl: 'partials/godata/pagination.html', 
    link: link 
}; 

В частичном (частичных/godata/pagination.html) я могу доступ к этим переменным (количество, размер и страница). Для 100% в частичном i я имею доступ к этим трем переменным, и никому другому в этой области.

Но я сделаю что-то с этими переменными в функциональной ссылке. Если я пытаюсь получить доступ к этим переменным в функции связи через ATTRS, они пусты :(

Что плохого и/или то, что я могу сделать

Обновлено:

console log output

И с scope: false переменная области не определена

И почему приносит строку attrs.$observe('page', function(val) { console.log('$observe: ' + val); }); в функциональной ссылке два выхода ... один с одним и без значения?

UPDATE снова:

function link(scope, element, attrs) { 
    console.log('scope: ' + scope.size); 
    console.log('scope: ' + scope); 
    console.log('attrs: ' + attrs.size); 
    console.log('attrs: ' + attrs); 
    attrs.$observe('size', function(size) { 
     console.log('$observe: ' + size); 
     if(size) { 
      scope.pagSize = size; 
     } 
    }); 
    console.log('after observe; pagSize: ' + scope.pagSize); 
} 

... принеси мне:

console log output

Но scope.pagSize имеет значение в браузере.

Как я могу работать с этими атрибутами в моей директиве, если я не могу получить к ним доступ ?!

+0

http://stackoverflow.com/questions/11913841/accessing-attributes-from-an-angularjs-directive – Dfr

+0

Попробуйте консоль зарегистрировать весь объект attr и посмотреть, что внутри. – Bazinga

+0

есть пустая Object 'scope: [object Object]' и 'attrs: [object Object]' – allapow

ответ

0

Они связаны с областью действия директивы.

Вы можете получить к ним доступ: scope.page, scope.count например.

0

Как @Hristo Enev Ответил: когда вы выделили сферу, лучше, чтобы получить доступ AttrS с scope.page или scope.count

, но если вы настаиваете, чтобы сделать это с помощью атрибута,

это так:

attrs.$observe('page', function(val) { console.log(val) })

приводит к значению атрибута страницы.

Внутри функции связывания вы должны использовать $ observ() для получения интерполированного значения.