Я создал специальную директиву элемента. Я хотел бы знать, как получить значение из области директивы или из атрибута.Как получить значение директивы в angularjs
<my-element my-attr="??" ng-click="myFunction(VALUE_OF_MY_ATTR)" />
Я создал специальную директиву элемента. Я хотел бы знать, как получить значение из области директивы или из атрибута.Как получить значение директивы в angularjs
<my-element my-attr="??" ng-click="myFunction(VALUE_OF_MY_ATTR)" />
Если вы свяжете myAttr
через два пути связывания в вашей директиве вы можете просто передать его с тем же именем в вашей функции, поскольку объем MYFUNCTION устанавливается с помощью директивы ngClick.
// template
<div ng-controller="someController">
myModel: {{ myModel }}
<my-element my-attr="myModel" ng-click="myFunction(myModel)" />
</div>
// js
angular.module("myModule").controller("someController", function ($scope) {
$scope.myModel = { number: 42 };
$scope.myFunction = function (data) { console.log(data); }
}).directive("myElement", function ($interval) {
return {
restrict: "E",
scope: { // define an isolated scope for you directive
myAttr: "=", // set two-way-binding for 'my-attr'
},
link: function ($scope, $element, attributes) {
// count up the number in myModel.
// myModel can be accessed via myAttr because it is defined
// in the scope of the directive.
$interval(function() {
// you can access
$scope.myAttr.number += 1;
}, 1000);
}
};
});
Вы можете увидеть рабочий пример в ссылке Plunker.
Важно: Вы не можете получить доступ к $scope.myModel
в директиве, потому что вы изолированы вам сферу, и вы должны использовать $scope.myAttr
Если вы не установили рамки атрибута вы получите тот же объем, как снаружи директивы, но затем вы не получаете легкое сглаживание и должны оценивать свои атрибуты директивы на свой собственный $scope.$eval(attributes.myAttr)
.
Но как заставить его работать без ввода? Значение атрибута изменяется директивой. – latata