我创建了一个AngularJS应用,其中包含两列:一列用于菜单,第二列用于内容(菜单中的每个链接都链接到)。内容和菜单位于DynamoDB中的一个表中,我正在使用Lambda函数进行扫描。此函数的输出将作为具有以下结构的JSON响应使用:
{
"body": [{
"course-content": "RL front matter",
"course-video": "https://123-course-videos.s3.amazonaws.com/vid_1.mp4",
"course-id": "rcl",
"course-title": "sml",
"course-lesson": "Lesson One"
}, {
"course-content": "RL2 front matter",
"course-video": "https://123-course-videos.s3.amazonaws.com/vid_2.mp4",
"course-id": "rcl2",
"course-title": "sml",
"course-lesson": "Lesson Two"
}, {
"course-content": "RL3 front matter",
"course-video": "https://123-course-videos.s3.amazonaws.com/vid_3.mp4",
"course-id": "rcl3",
"course-title": "sml",
"course-lesson": "Lesson Three"
}]
}
我(在这里的人们的帮助下,构建了以下控制器,该控制器循环响应并构建菜单:
控制器
app.controller('menu', function($scope, $http) {
$http.get('api address').
then(function(response) {
$scope.navi = response.data.body;
console.log($scope.navi)
});
使用ng-repeat构建的菜单
<div class="col-4" ng-controller="menu">
<div ng-repeat="nav in navi">
<ul><li>{{ nav['course-lesson'] }}</li></ul>
</div>
此构建以下菜单:
Lesson One
Lesson Three
Lesson Two
而且我正在使用第二个控制器,该控制器使用同一API调用中的内容:
app.controller('content', function($scope, $http) {
$http.get('api address').
then(function(response) {
$scope.content = response.data.body;
});
});
内容在路由中使用简单的content.html模板显示,如下所示:
app.config(function($routeProvider) {
$routeProvider
.when("/", {
templateUrl : "templates/main.html"
})
.when("/content", {
templateUrl : "templates/content.html",
controller : "content"
});
这里是我需要帮助的地方:
这里是伪代码:
Lesson One - needs to link to content from response.data.body[0]
Lesson Two - needs to link to content from response.data.body[1]
Lesson Two - needs to link to content from response.data.body[2]
为了帮助更好地理解功能:
很长的帖子,很抱歉,但是我想提供足够的细节以帮助澄清任何混淆。
要从ng-repeat
元素将数据传递到控制器,请使用ng-click
指令:
<div class="col-4" ng-controller="menu">
<div ng-repeat="nav in navi">
<ul>
<li>
{{ nav['course-lesson'] }}
<button ng-click="selectCourse(nav, $index)">Select</button>
</li>
</ul>
</div>
将功能分配给作用域:
$scope.selectCourse = function(course, index) {
console.log(course, index);
};
有关更多信息,请参阅