我认为我正在尝试做的事情非常简单,但不知何故我无法让它发挥作用。我确定必须有一些简单的解决方案,但我找不到。
基本上,我有一个简单的字典数组,其中包含我要渲染的资源(在行为控制器中定义为 $scope.acts)。我没有导入 JSON 或类似的东西,它就在控制器文件中。索引工作正常,但我正在尝试渲染一个“显示”视图(不确定这是否是正确的 Angular 术语,我习惯使用 Rails,所以我仍然认为这些术语),对于单个数组中的项目,它不工作。模板正在加载,但它没有从数组中获取数据。
我真的想以最简单的方式做到这一点,没有花里胡哨的东西。最终,我想从 Rails 应用程序加载数据,但我想一步一步地构建它,以便我了解 Angular 是如何做到这一点的。
这是我的代码。
应用程序.js
var controllers, snowball_effect;
snowball_effect = angular.module('snowball_effect', [
'templates',
'ngRoute',
'ngResource',
'controllers'
]);
snowball_effect.config([
'$routeProvider', function($routeProvider) {
return $routeProvider
.when('/', {
templateUrl: "static_pages/index.html",
controller: 'StaticPagesController'
})
.when('/acts/index', {
templateUrl: "acts/index.html",
controller: 'ActsController'
})
.when('/acts/:id', {
templateUrl: "acts/show.html",
controller: 'ActsController'
});
}
]);
controllers = angular.module('controllers', []);
controllers.controller("StaticPagesController", ['$scope', {}]);
controllers.controller("NavBarController", [
'$scope',
'$routeParams',
'$location',
function($scope,$routeParams,$location) {
$scope.actsIndex = function() {
$location.path("/acts/index");
}
$scope.actsNew = function () {
$location.path("/acts/index");
}
}]);
ActsController.js
controllers = angular.module('controllers');
controllers.controller("ActsController", [
'$scope',
'$routeParams',
'$location',
'$resource',
function($scope,$routeParams,$location,$resource) {
$scope.acts = [
{
id: 1,
name: "Plant a Flower",
description: "Plant a flower in your garden or along the street.",
inspires: 1
}
];
$scope.addAct = function() {
$scope.acts.push($scope.newAct);
}
$scope.deleteAct = function(act) {
$scope.acts.splice($scope.acts.indexOf(act), 1);
}
$scope.linkToShowAct = function(act) {
$location.path('acts/' + act.id);
}
}]);
模板/行为/show.html
<div class="container" ng-controller="ActsController">
<div class="body">
<h1>
{{act.name}}
</h1>
<p class="act-show-description">
{{act.description}}
</p>
<p class="act-show-inspires">
<strong>Inspires:</strong>
{{act.inspires}}
</p>
<a href="#/">Edit</a>
<a href="#/">Back</a>
</div>
</div>