각도 방향에서 부울 값을 바인딩하려면 어떻게 해야 합니까?
몇 가지 부울 속성을 디렉티브에 바인드/설정하고 싶습니다.하지만 나는 이것을 어떻게 해야 하는지 그리고 다음 행동을 성취할 수 있는지 정말 모르겠다.
구조물에 플래그를 설정한다고 가정해 보겠습니다.리스트를 접을 수 있는지 없는지 확인합니다.다음과 같은 HTML 코드를 가지고 있습니다.
<list items="list.items" name="My list" collapsable="true"></list>
items
쌍방향으로 묶여 있습니다.name
단순한 속성입니다.
그러면 좋겠어요.collapsable
값(true, false 또는 기타)을 전달함으로써 리스트의 $syslog에서 사용할 수 있는 속성(양방향 바인딩)
<list items="list.items" name="{{list.name}}" collapsable="list.collapsed"></list>
UI 컴포넌트를 개발 중인데 여러 가지 방법으로 조작할 수 있도록 하고 싶습니다.오브젝트의 속성을 속성에 전달하여 컴포넌트의 상태를 알고 싶은 사람도 있습니다.
이것을 달성할 수 있는 방법이 있나요?제가 잘못 이해했거나 틀렸다면 정정해 주세요.
감사해요.
다음과 같이 부울에 대해 독자적인 1방향 데이터 바인딩 동작을 설정할 수 있습니다.
link: function(scope, element, attrs) {
attrs.$observe('collapsable', function() {
scope.collapsable = scope.$eval(attrs.collabsable);
});
}
여기서 $observe를 사용한다는 것은 "watch"가 속성 변경에만 영향을 받는다는 것을 의미하며 지시문 내에서 $scope.collapsable을 직접 변경해도 영향을 받지 않습니다.
양방향 바인딩을 설정하는 명령어에 스코프를 만듭니다.
app.controller('ctrl', function($scope)
{
$scope.list = {
name: 'Test',
collapsed: true,
items: [1, 2, 3]
};
});
app.directive('list', function()
{
return {
restrict: 'E',
scope: {
collapsed: '=',
name: '=',
items: '='
},
template:
'<div>' +
'{{name}} collapsed: {{collapsed}}' +
'<div ng-show="!collapsed">' +
'<div ng-repeat="item in items">Item {{item}}</div>' +
'</div>' +
'<br><input type="button" ng-click="collapsed = !collapsed" value="Inside Toggle">' +
'</div>'
};
});
다음으로 Atribute로서 옵션을 전달합니다.
<list items="list.items" name="list.name" collapsed="list.collapsed"></list>
줄을 넘길 수 없습니다.true
또는false
또한 다음과 같은 스코프 속성 전달을 지원합니다.list.collapsed
쌍방향 바인딩의 Atribut값으로 지정합니다.둘 중 하나를 선택해야 합니다.
이는 격리 범위를 사용할 때 지시문에서 속성 값을 해석하는 방법을 하나만 지정할 수 있기 때문입니다.
내 생각엔 네가 이걸 쓸 수 있을 것 같은데=
링크 기능을 체크합니다.attrs.collapsable
로 설정되어 있다.true
또는false
: 이 경우 부울 값이 전달된 것을 알고, 전달되지 않은 경우 양방향 데이터 바인딩을 사용합니다.하지만 이건 해킹이야
1년 정도 늦었지만 링크 기능(https://docs.angularjs.org/guide/directive))을 사용하면 가능합니다.시그니처는 다음과 같습니다.
function link(scope, element, attrs) { ... }
해당 특성 객체는 전달된 원시 값으로 채워집니다.따라서 (attrs.disc == 'true') {...} 또는 그와 비슷한 것.
Angular 1.3 애트리뷰트부터.$defined Atribute에도 트리거되는 것처럼 보이므로 미정의 Atribute를 설명하려면 다음과 같은 작업을 수행해야 합니다.
link: function(scope, element, attrs) {
attrs.$observe('collapsable', function() {
scope.collapsable = scope.$eval(attrs.collapsable);
if (scope.collapsable === undefined) {
delete scope.collapsable;
}
});
},
언급URL : https://stackoverflow.com/questions/18014471/how-to-bind-boolean-values-in-angular-directives
'code' 카테고리의 다른 글
컨트롤러에서 JSON 렌더링 (0) | 2023.02.16 |
---|---|
'오류: [$parse:lexerr] 렉서 오류:heroku 전개 시 예기치 않은 다음 캐릭터' (0) | 2023.02.16 |
jq를 사용하여 요소 속성 값으로 개체 배열을 필터링하려면 어떻게 해야 합니까? (0) | 2023.02.16 |
Javascript를 사용한 CSS 값 변경 (0) | 2023.02.16 |
DESCRIBE 명령을 사용하지 않고 Oracle에서 테이블을 기술하려면 어떻게 해야 합니까? (0) | 2023.02.16 |