programing

디버깅하는 동안 오류가 발생했습니다. 2열의 토큰 '{' 키가 잘못되었습니다.

i4 2023. 3. 12. 10:25
반응형

디버깅하는 동안 오류가 발생했습니다. 2열의 토큰 '{' 키가 잘못되었습니다.

디버깅할 수 없는 오류가 발생했습니다.

폼필드.이네이블로그

<div class='row form-group' ng-form="{{field}}" ng-class="{ 'has-error': {{field}}.$dirty && {{field}}.$invalid }">
    <label class='col-sm-2 control-label'> {{ field | labelCase }} <span ng-if='required'>*</span></label>
    <div class='col-sm-6' ng-switch='required'>

        <input ng-switch-when='true' ng-model='record[field][0]' type='{{record[field][1]}}' class='form-control' required ng-change='update()' ng-blur='blurUpdate()' />

        <div class='input-group' ng-switch-default>
            <input ng-model='record[field][0]' type='{{record[field][1]}}' class='form-control' ng-change='update()' ng-blur='blurUpdate()' />
            <span class='input-group-btn'>
                <button class='btn btn-default' ng-click='remove(field)'><span class='glyphicon glyphicon-remove-circle'></span></button> 
            </span>
        </div>
    </div>

    <div class='col-sm-4 has-error' ng-show='{{field}}.$dirty && {{field}}.$invalid' ng-messages='{{field}}.$error'>
        <p class='control-label' ng-message='required'> {{ field | labelCase }} is required. </p>
        <p class='control-label' ng-repeat='(k, v) in types' ng-message='{{k}}'> {{ field | labelCase }} {{v[1]}}</p>
    </div>
</div>

new.discloss.discloss.conf.

<h2> New Contact </h2>

<form name='newContact' novalidate class='form-horizontal'>
    <form-field record='contact' field='firstName' live='false' required='true'></form-field>



 <div class='row form-group'>
        <div class='col-sm-offset-2'>
            <button class='btn btn-primary' ng-click='save()'> Create Contact </button>
        </div>
    </div>
</form>

다음의 에러가 표시됩니다.

브라우저에서:

오류: [$syslog:http://http://errors.angularjs.org/1.4.1/$parse/syntax?p0=%7B&p1=invalid%20key&p2=2&p3=%7B%7Bfield%7D%7D.%24error&p4=%7Bfield%7D%7D.%24error]

각진 부위:

오류: $parse: 구문 오류: 구문 오류:표현식 [{field}}의 2열에 토큰 '{' 키가 잘못되었습니다.$error]가 [{field}}부터 시작됩니다.$error.

왜 그런지 아는 사람?감사합니다!

이 에러는 커스텀 디렉티브의 Atribute에 데이터를 바인드 할 때도 발생합니다.어디에

$scope.myData.value = "Hello!";

이로 인해 다음 오류가 발생합니다.

<my-custom-directive my-attr="{{myData.value}}"></my-custom-directive>

하지만 이 방법은 잘 작동합니다.

<my-custom-directive my-attr="myData.value"></my-custom-directive>

문제는 다음과 같습니다.

ng-class="{ 'has-error': {{field}}.$dirty && {{field}}.$invalid }"

제거한다.{{ }}:

ng-class="{ 'has-error': field.$dirty && field.$invalid }"

여기에도 같은 문제가 있습니다.

ng-messages='{{field}}.$error'

대체 대상:

ng-messages='field.$error'

다만, 이러한 문제를 수정하면, 이 회선의 에러가 발생하는 경우가 대부분입니다.

ng-message='{{k}}'

따라서 다음과 같이 변경해야 합니다.

ng-message='k'

이 문제는 제가 같은 튜토리얼을 따를 때 발생하였습니다.이 경우 해결방법은 ngMessages의 새로운 버전을 사용하고 있기 때문에 bower.json 파일을 비디오의 동일한 버전으로 갱신해야 한다는 것을 알게 되었습니다(버전 1.4 이후로는 이 예제는 작동하지 않습니다).그 후 모든 것이 정상적으로 동작하며, 여기에 의존관계가 표시됩니다.섹션:

"dependencies": {
  "angular": "1.3.9",   
  "angular-route": "1.3.9", 
  "angular-resource": "1.3.9", 
  "angular-messages": "1.3.9", 
  "bootstrap": "^3.3.6"}

이것이 내 html이라고 가정하자.

<div ng-controller='MyCtrl' ng-init="array=[{id:1}, {id:2}]">Hi, it's {{name}}. 
      <div ng-repeat='obj in array'>
        The current time is <display-time data="{{array}}"/>.
      </div>
</div>

여기서display-time는 커스텀 디렉티브입니다.정의는 다음과 같습니다.

var demo = angular.module('demo', []);
demo.directive('displayTime', function($parse) {
    return {
        restrict: 'E',
        replace: true,
        scope: {
            data: '='
        },
        transclude: false,
        template: '<span class="currentTime"></span>',
        link: function (scope, element, attrs, controller) {
            var currentDate = new Date();
            console.log(scope.data);
            element.text(currentDate.toTimeString());
        }
    }});

에 사용되는 구문을 주의 깊게 관찰해 주십시오.data="{{array}}".

사용하고 있기 때문에data커스텀 디렉티브의 범위(문구를 사용)에서

scope: {
    data: '='
},

),

나는 얻을 것이다parse error

하지만 구문을 사용하면data="array"링크 함수 내에서 다음 코드 스니펫을 사용합니다.

scope: {
    //data: '='
},

그럼 난 안 받을 거야parse error.

그래서 당신은 구문을 사용해야 합니다.data="{{array}}"의 일부로서 액세스 하고 싶은 경우에만attrs내부 파라미터link기능.

언급URL : https://stackoverflow.com/questions/31357055/having-a-hard-time-debugging-error-token-invalid-key-at-column-2

반응형