Разбор данных в ng-модель не работает
Я пытаюсь проанализировать данные в ng-модели, но я получаю сообщение об ошибке.
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>
данные:
$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"}
];
Я получаю эту ошибку:
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)
Может кто-нибудь помочь мне, что я здесь делаю не так? Разве невозможно проанализировать данные в ng-модели? Большое спасибо
1 ответ
Решение
Вот один из подходов к использованию директивы для разбора строк модели путем компиляции шаблона с $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>
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));
}
}
});
Это требует использования изолированной области видимости, поэтому вы должны объявить user
в контроллере, чтобы это работало. Это может быть не лучшим подходом, если вам также потребуется добавить проверку, но пока она охватывает то, что было показано.
Я старался сделать это как можно проще на данный момент.