2014-08-30 2 views
0

angular을 사용하면 사용자 지정 지시문을 작성한 다음 일부 필터를 작성한 상황이 있습니다.angularjs - 지시문에 첨부 된 필터를 얻습니다.

필자는 많은 검색 작업을 수행했으며 필터가 붙어있는 필터를 실제로 가져올 명확한 방법을 찾을 수 없었습니다. 그들은 이렇게 붙어 있습니다. 이 지침은 아래와 같다

<div ng-data-bind="Model.Tags | format:'json'"></div> 

...

.directive('ngDataBind', ["$parse", "$filter", function($parse, $filter){ 
    return { 
     restrict: "A", 
     scope: { 
     ngDataBind: "=" 
     }, 
     link: function(scope, element, attributes, controller) { 
     // I am hoping to get the value of 'format' here (which is 'json' in this case) 
     } 
    } 
}); 

는 지금, 필터는 매우 맨손으로 뼈입니다. 나는 실제 기능을 추가하지 않았다. 왜냐하면 내가해야 할 일은 지시문에 있기 때문이다.

.filter('format', function(){ 
    return function(text, value) { 

    } 
}); 

는 그래서 ngDataBind 지시어에, 내가 쓴 것을, 나는 format 필터와 전달 된 매개 변수를 싶어.

$filter 서비스를 살펴본 결과이 기능이 작동하지 않는 것 같습니다. 나는 지침에서 link을 통해 전달 된 attributes 매개 변수를 구문 분석하려고 시도했지만, 그 모든 것이 저에게 많은 도움이되는 거대한 문자열입니다.

여기에 관한 정보가 있습니까?

업데이트이 분명히 필터의 적절한 사용하지 않기 때문에 내가, 내가 다른 접근 방식을 취하고있는 것보다이에서 더 많은 경험을 가진 사람들에 의해 검토 된 후

.

내가 함께 갈거야 방법은 예상되는 입력의 특정 일관성이 있기 때문에 ..

<div c-data-bind="{ value: 'Model.Tags', format: 'json' }"></div> 

예를 들어, 표현처럼 할당 된 지침에 나는이 방법으로 갔다 속성을 만드는 것입니다

(따옴표 유형간에 불일치 대신 항상 내용이 ''으로 묶여 있어야 함) 나중에 지시문을 추가 할 필요없이 지시문을 확장 할 수 있습니다. 이것이 좋은 접근인지 아닌지는 확실하지 않지만 ... 은 작동하려면 인 것 같습니다.

+1

당신은 질문이 명확하지 않습니다. 귀사의 지침, 코드 작성자, 코드를 사용하여 코드를 보여주고 달성하고자하는 것을 알려주십시오. –

+0

물론입니다. 잠시만 기다려주세요. 그렇게하겠습니다. 나는 내가 코드를 포함했다고 생각했다. 나는 단지 결백했다. – Ciel

+0

좋아, 나는 내가 처음 생각한 것으로 업데이트했다. – Ciel

답변

1

접근 방법이 꺼져 있습니다. 이 지시문은 필터 자체와 관련되어서는 안됩니다.

필터는 논리에 따라 바운드 데이터를 처리합니다.

지시어는 필터링 된 데이터를 수신하고 논리에 따라 작동합니다.

둘 중 누구도 다른 것에 대해 알아야 할 사항이 없습니다. 필요한 경우 디자인에 결함이 있습니다.

Separations of concern

+0

안녕하세요. 정보를 제공해 주셔서 감사합니다. 나는 그것을 인정할 수 있지만, 추가 지시문을 만드는 것 이외의 여러 옵션을 지시문에 전달할 것을 제안하는 또 다른 방법을 말해 줄 수 있습니까? – Ciel

+1

추가 속성 data-myns-format = "json"을 추가하는 것이 좋습니다. ng 네임 스페이스를 사용하지 마십시오. 각도 코어 용으로 예약되어 있습니다. – AirBorne04

+0

안녕하세요, 원래 게시물을 어떻게 수정했는지 설명하기 위해 업데이트했습니다. 최종 결과를 보려면 http://plnkr.co/edit/HiuUXRM26tJ0VyerP02q?p=preview를 방문하십시오. - 지시문이 거대하고 외설적 인 이유는 다음과 같습니다. Telerik이이 동작에 대한 정식 수정을 발표 할 때까지 실제 JSON 객체를 지원하지 않는 위젯은 실제 객체를 사용합니다. – Ciel

관련 문제