AngularJs 복잡한 데이터를 지침으로 전달
다음과 같은 지시가 있습니다.
<div teamspeak details="{{data.details}}"></div>
오브젝트 구조는 다음과 같습니다.
data: {
details: {
serverName: { type: 'text', value: 'my server name' },
port: { type: 'number', value: 'my port' },
nickname: { type: 'text' },
password: { type: 'password' },
channel: { type: 'text' },
channelPassword: { type: 'password' },
autoBookmarkAdd: { type: 'checkbox' }
}
}
데이터 내의 데이터를 기반으로 링크를 생성해 주세요.data.details
물건.유감스럽게도 오브젝트의 내부 값에 액세스할 수 없기 때문에 동작하지 않지만, 다음과 같은 단순한 데이터 구조를 전달합니다.
<div teamspeak details="{{data.details.serverName.value}}"></div>
를 사용하여 액세스 할 수 있습니다.{{details}}
.
지시 코드는 다음과 같습니다.
App.directive('teamspeak', function () {
return {
restrict: 'A',
template: "<a href='ts3server://{{details.serverName.value}}:{{details.port.value}}'>Teamspeak Server</a>",
scope: {
details: '@details',
},
link: function (scope, element, attrs) {
}
};
});
감사해요.
Angularjs 공식 사이트 설명 읽기:
@ 또는 @attr - 로컬 스코프 속성을 DOM 속성 값에 바인딩합니다.DOM 속성이 문자열이기 때문에 결과는 항상 문자열입니다.속성 이름이 지정되지 않은 경우 속성 이름은 로컬 이름과 동일한 것으로 간주됩니다.범위 정의 {localName:'@myAttr'}을(를) 지정하면 위젯 범위 속성 localName이 보간된 hello {{name}} 값을 반영합니다.이름 속성이 변경되면 위젯 범위의 localName 속성도 변경됩니다.이름은 상위 범위(컴포넌트 범위가 아님)에서 읽힙니다.
따라서 문자열만 전송할 수 있으며 개체를 전달하려면 다음 명령을 사용하여 양방향 바인딩을 설정해야 합니다.=
.
scope: {
details: '=',
},
그리고 당신의 HTML은
<div teamspeak details="data.details"></div>
범위를 분리하지 않고 수행하는 방법에 대한 질문이 있었습니다. 해결 방법은 다음과 같습니다.
<div teamspeak details="{{data.details}}"></div>
App.directive('teamspeak', function () {
return {
restrict: 'A',
template: "<a href='ts3server://{{details.serverName.value}}:{{details.port.value}}'>Teamspeak Server</a>",
link: function (scope, element, attrs) {
if(attrs.details){
scope.details = scope.$eval(attrs.details);
}
}
};
});
사용할 수도 있습니다.$interpolate
에 가치가 있다면attrs.details
각도 {{...}로 동적으로 설정되어야 합니다.}} 표현...
scope.details = scope.$eval($interpolate(attrs.details)(scope));
(주사하는 것을 잊지 마세요.$interpolate
(지침에 포함)
중요사항:나는 각도 2에서 이 방법을 테스트하지 않았다.
언급URL : https://stackoverflow.com/questions/18939569/angularjs-passing-complex-data-to-directive
'source' 카테고리의 다른 글
jq: 객체의 각 엔트리에 대한 인쇄 키와 값 (0) | 2023.03.10 |
---|---|
네스트된ng클릭콜간의이벤트 전파를 취소하는 가장 좋은 방법은 무엇입니까? (0) | 2023.03.10 |
차단된 발신지 간 요청:같은 오리진 정책에 따라 다음 위치에서 원격 리소스를 읽을 수 없습니다. (0) | 2023.03.05 |
Plask-sqlalchemy 및 Postgresql에서의 JSON 유형 사용 (0) | 2023.03.05 |
python의 pretty-print json(비음파적 방법) (0) | 2023.03.05 |