Я создаю директиву, которая обрабатывает данные из значения атрибута. директива будет использоваться только как атрибут элемента. Так что теперь я просто хочу запускать функцию всякий раз, когда она вызывается
Директивный вызов выглядит так:
<div rest="accounts">
{{testing}}
</div>
Определение директивы выглядит следующим образом:
app.directive("rest", [function(){
return {
restrict: 'A',
scope: {
rest: '='
},
link: function(scope, element, attrs, ctrl) {
console.log(scope);
}
};
}])
каждый раз, когда я использую директиву, журнал показывает, что rest
свойств undefined
. Учетные записи - это просто строка, потому что сначала я хочу проверить директиву, но все же я не знаю, почему она всегда не определена, даже с использованием $watch
like this:
app.directive("rest", [function(){
return {
restrict: 'A',
scope: {
rest: '='
},
link: function(scope, element, attrs, ctrl) {
scope.$watch('rest', function(data){
console.log(data); //Still undefined
});
}
};
}])
Метод, который вы используете для передачи значений, передаёт ссылку на переменную, а не строковое значение.
С rest="accounts"
в HTML, =
в области подразумевается двусторонняя привязка, где внутреннее свойство scope.rest
привязано к внешнему свойству $scope.accounts
.
Если вы всегда собираетесь передавать строку, вы должны использовать @
в свойстве scope. Это подразумевает одностороннее связывание между rest
и строковым значением.
Вы также можете использовать директиву как написано без определения $scope.accounts
, предоставив свое значение в виде строкового литерала, то есть rest="'accounts'"
. Однако эту форму следует использовать экономно, из-за громоздкой природы вложенных котировок.
account
должна быть неопределенной, прежде чем передать ее директиве. Как это инициализируется?