2014-11-18 2 views
0

내 AngularJS/Ionic 응용 프로그램에서 JSON 스키마 URN을 포함하는 요소의 사용자 지정 인수를 사용하여 지시문을 작성하고 있습니다. 문제는 AngularJS가이 URN을 표현식으로 평가하려고 시도한다는 것입니다.URN을 인수로 전달할 때 AngularJS가 오류를 throw합니다.

<myDirective myAttr="urn:jsonschema:net:example:net:myschema"></myDirective> 

오류 :

Error: [$parse:syntax] http://errors.angularjs.org/1.2.25/$parse/syntax?p0=%3A&p1=is%20an%20unexpected%20token&p2=4&p3=urn%3Ajsonschema%3Anet%3Aexample%3Anet%3Amyschema&p4=%3Ajsonschema%3Anet%3Aexample%3Anet%3Amyschema 
    at Error (native) 
    at http://localhost:8000/app/www/lib/ionic/js/ionic.bundle.min.js:37:450 
    at fb.throwError (http://localhost:8000/app/www/lib/ionic/js/ionic.bundle.min.js:200:227) 
    at fb.parse (http://localhost:8000/app/www/lib/ionic/js/ionic.bundle.min.js:199:82) 
    at $get (http://localhost:8000/app/www/lib/ionic/js/ionic.bundle.min.js:130:31) 
    at h (http://localhost:8000/app/www/lib/ionic/js/ionic.bundle.min.js:136:163) 
    at k.$get.k.$watch (http://localhost:8000/app/www/lib/ionic/js/ionic.bundle.min.js:137:444) 
    at linker (http://localhost:8000/app/www/js/directives.js:8:15) 
    at http://localhost:8000/app/www/lib/ionic/js/ionic.bundle.min.js:95:293 
    at N (http://localhost:8000/app/www/lib/ionic/js/ionic.bundle.min.js:85:372) <jsonform schema="urn:jsonschema:net:example:net:myschema"> ionic.bundle.min.js:123(anonymous function) ionic.bundle.min.js:123$get ionic.bundle.min.js:99N ionic.bundle.min.js:85g ionic.bundle.min.js:78g ionic.bundle.min.js:78N ionic.bundle.min.js:85g ionic.bundle.min.js:78N ionic.bundle.min.js:85g ionic.bundle.min.js:78(anonymous function) ionic.bundle.min.js:77d ionic.bundle.min.js:345u.directive.a.compile ionic.bundle.min.js:345N ionic.bundle.min.js:85g ionic.bundle.min.js:78N ionic.bundle.min.js:85g ionic.bundle.min.js:78N ionic.bundle.min.js:85g ionic.bundle.min.js:78(anonymous function) ionic.bundle.min.js:77d ionic.bundle.min.js:345u.directive.a.compile.b ionic.bundle.min.js:345$get.k.$broadcast ionic.bundle.min.js:145v.transitionTo.v.transition.N.then.v.transition.v.transition ionic.bundle.min.js:321l.promise.then.E ionic.bundle.min.js:131(anonymous function) ionic.bundle.min.js:132$get.k.$eval ionic.bundle.min.js:143$get.k.$digest ionic.bundle.min.js:140$get.k.$apply ionic.bundle.min.js:143h ionic.bundle.min.js:103u ionic.bundle.min.js:108w.onreadystatechange ionic.bundle.min.js:110XMLHttpRequest.send (async)b ionic.bundle.min.js:110s ionic.bundle.min.js:105$get.f ionic.bundle.min.js:102l.promise.then.E ionic.bundle.min.js:131l.promise.then.E ionic.bundle.min.js:131(anonymous function) ionic.bundle.min.js:132$get.k.$eval ionic.bundle.min.js:143$get.k.$digest ionic.bundle.min.js:140$get.k.$apply ionic.bundle.min.js:143(anonymous function) ionic.bundle.min.js:49d ionic.bundle.min.js:66c ionic.bundle.min.js:49fc ionic.bundle.min.js:49Xc ionic.bundle.min.js:48(anonymous function) ionic.bundle.min.js:245a ionic.bundle.min.js:176(anonymous function) ionic.bundle.min.js:62r ionic.bundle.min.js:38c ionic.bundle.min.js:62 

가 어떻게 내 속성을 구문 분석에서 AngularJS와 중지 할 수 있습니다?

편집 : 변경된 속성 이름 스키마 myAttr 스키마 때문에이 예약되어 있습니다. 동일한 오류가 발생합니다.

+1

가'{{ '및 래핑 된 것처럼'schema'는 식 (인 }}'), 문자열이 아니므로'schema = " 'urn : jsonschema : net : example : net : myschema'"'를 사용하십시오. – Blackhole

+0

속성 이름이 변경되었습니다. 동일한 오류가 발생합니다. 왜 -1일까요? : –

답변

1

사용 텍스트 @ 바인딩 :

app.directive('myDirective', function() { 
    return { 
     restrict: 'E', 
     scope: { 
      myAttr: "@" 
     }, 
     link: function (scope) { 
      console.log(scope.myAttr); 
     } 
     }; 
    } 
); 

HTML :

<my-directive my-attr="urn:jsonschema:net:example:net:myschema"></my-directive> 

plunker : http://plnkr.co/edit/xfh3MVWzhBrw7bpJsZ2B?p=preview

+0

단순한 속성 기반 지시문을 사용하고 싶지 않습니다. 첫 번째 주석에서 볼 수 있듯이 추가 속성이있는 요소 기반 지시문을 원합니다. –

+0

@TedBarth 내 게시물을 업데이트했습니다. –

관련 문제