2015-01-27 3 views
0

데이터 모델을 구문 분석하려고하는데 오류가 발생합니다.데이터 구문 분석 데이터가 작동하지 않습니다.

HTML :

<div class="process-checkbox-holder" ng-repeat="time in data"> 
      <div class="checkbox-title">{{ time.id }}</div> 
      <div class="process-checkbox"> 
       <input type="checkbox" ng-model="{{ time.model}}" value="None" id="process-checkbox" name="check"> 
       <label for="process-checkbox"></label> 
      </div> 
     </div> 

데이터 :

Error: [$parse:syntax] Syntax Error: Token 'time.model' is unexpected, expecting [:] at column 5 of the expression [{{ time.model}}] starting at [time.model}}]. 
http://errors.angularjs.org/1.2.16/$parse/syntax?p0=time.model&p1=is%20unex…cting%20%5B%3A%5D&p2=5&p3=%7B%7B%20%20time.model%7D%7D&p4=time.model%7D%7D 
    at angular.js:78 
    at Parser.throwError (angular.js:10266) 
    at Parser.consume (angular.js:10303) 
    at Parser.object (angular.js:10616) 
    at Parser.primary (angular.js:10234) 
    at Parser.unary (angular.js:10492) 
    at Parser.multiplicative (angular.js:10475) 
    at Parser.additive (angular.js:10466) 
    at Parser.relational (angular.js:10457) 
    at Parser.equality (angular.js:10448) 

사람이 내가 잘못 여기서 뭘하는지 좀 도와 줄래 :이 오류를 받고 있어요

$scope.data = [ 
      {"id":"00", "model": "user.hourzero"}, 
      {"id":"01", "model": "user.hourone"}, 
      {"id":"03", "model": "user.hourtwo"}, 
      {"id":"04","model": "user.hourthree"}, 
      {"id":"05", "model": "user.hourfour"}, 
      {"id":"06", "model": "user.hourfive"}, 
      {"id":"07", "model": "user.hoursix"}, 
      {"id":"08", "model": "user.hourseven"}, 
      {"id":"09", "model": "user.houreight"}, 
      {"id":"10", "model": "user.hournine"}, 
      {"id":"11", "model": "user.hourten"}, 
      {"id":"12", "model": "user.houreleven"}, 
      {"id":"13", "model": "user.hourthirteen"}, 
      {"id":"14", "model": "user.hourfourteen"}, 
      {"id":"15", "model": "user.hourfifteen"}, 
      {"id":"16", "model": "user.hoursixteen"}, 
      {"id":"17", "model": "user.hourseventeen"}, 
      {"id":"18", "model": "user.houreighteen"}, 
      {"id":"19", "model": "user.hournineteen"}, 
      {"id":"20", "model": "user.hourtwenty"}, 
      {"id":"21", "model": "user.hourtwentyone"}, 
      {"id":"22", "model": "user.hourtwentytwo"}, 
      {"id":"23", "model": "user.hourtwentythree"} 

     ]; 

? 데이터를 구문 분석 할 수 없습니까? 많은 감사

PLNKR

+0

당신를 셋업 jsfiddle 수 있습니까? – localghost

+0

그런 문자열에서 객체 참조를 전달할 수 없습니다. ng-model은 범위 객체로 해결할 수 있어야합니다. 모델 문자열을 템플릿으로 구문 분석하는 지시문을 만들어야합니다. – charlietfl

+0

PLNKR을 추가했습니다 –

답변

1

여기이 필요한 JS

app.directive('checkBox', function($compile){ 
    return {   
     restrict:'E',  
     scope:{model : '=', user:'='}, 
     link:function(scope,elem,attrs){    
      var template ='<input type="checkbox" ng-model="'+scope.model+'">'; 
      elem.replaceWith($compile(template)(scope)); 
     } 
    } 
}); 

$compile

HTML

<div class="process-checkbox-holder" ng-repeat="time in data"> 
    <span class="checkbox-title">{{ time.id }}</span> 
    <check-box model="time.model" user='user'></check-box> 
    </div> 

와 템플릿을 컴파일하여 모델 문자열을 구문 분석하는 지시어를 사용하여 하나의 접근 방식입니다 나는 solated scope이므로 컨트롤러에 user을 선언해야합니다. 유효성 검사를 추가 할 필요가있는 경우이 방법이 최선의 방법이 아닐 수도 있지만 현재는 표시된 내용을 다루고 있습니다.

가능한 한 간단하게 유지하려고했습니다.

DEMO

+0

환상적, 그게 내가 찾고 있었던거야! 많은 감사 :) –

+0

ng- 지침에서 "{{}}"구문을 사용하지 마십시오. – Ogglas

관련 문제