Я новичок в угловом, и я хочу знать, как изменить json-массив на ng-click. Я пробовал разные методы, но код не работал. Я не уверен, как создать эту функциональность.
Вот мой код. Я хочу, чтобы значение по умолчанию было главой 1, когда приложение загружается, и когда пользователь щелкает ссылку меню, он изменяется на любой номер главы, переданный в функцию.
menu.html ---- view
<li>
<a href>Practice</a>
<ul>
<li ng-repeat="words in allTerms track by $index">
<a href class="{{$index}}" id="{{ $index }}" ng-click="testing($event); PracticeTerm(); changeData('chapter2');" >{{ words.term }}</a>
</li>
</ul>
</li>
Я использую службу для загрузки данных
app.factory('quest', ['$http', function($http) {
return $http({
method: 'GET',
url: 'data/study.json'
}).success(function(data) {
return data;
})
.error(function(err) {
return err;
});
}]);
Вот фрагмент кода моего контроллера, который у меня до сих пор.
quest.success(function(data) {
$scope.data = data;
$scope.total = data.chapter1.length;
$scope.allTerms = data.chapter1;
// stores current term index
$scope.shared = [];
$scope.changeData = function(thechapter){
return $scope.total = 'data.'+ thechapter + '.length';
$scope.allTerms = 'data.' + thechapter;
console.log($scope.total);
};
});
Данные JSON ---- данные образца
"chapter1": [
{
"id": "1",
"chapter": "1",
"term": "Closingstage",
"pronun": "kloh-zing steyj",
"soundfile": "",
"definition": "Closing stage definitions ---------CLOSING STAGE DEFINITION"
},
{
"id": "2",
"chapter": "1",
"term": "CaptialWords",
"pronun": "CAP-I-Tal Worlds",
"soundfile": "",
"definition": "Capital Worlds definitions----------------CAPITAL WORLD DEFINITION"
}
],
"chapter2": [
{
"id": "1",
"chapter": "2",
"term": "Closingstage2222",
"pronun": "kloh-zing steyj222222222",
"soundfile": "",
"definition": "Closing stage definitions ---------CLOSING STAGE DEFINITION22222222"
},
{
"id": "2",
"chapter": "2",
"term": "CaptialWords22222222222",
"pronun": "CAP-I-Tal Worlds",
"soundfile": "",
"definition": "Capital Worlds definitions----------------CAPITAL WORLD DEFINITION222222222222"
}
]
Попробуйте использовать следующую функцию вместо той, которая находится в вашем контроллере
$scope.changeData = function(thechapter){
$scope.allTerms = data[thechapter];
console.log($scope.total);
return $scope.total = data[thechapter].length;
};
обратите внимание, что я переместил обратную линию, чтобы быть последней строкой в функции, чтобы выполнялись другие строки.