我在RoR项目上关注整数Angular JS的教程。
在我的控制器js文件中我得到了这个:
raffle.coffee
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
@RaffleCtrl = ($scope) ->
$scope.entries = [
{name:"name1"}
{name:"name2"}
{name:"name3"}
{name:"name4"}
]
在我的控制器html(由rails生成)中我得到了这个:
index.html.erb
<h1>Raffle</h1>
<div ng-controller="RaffleCtrl">
<form>
<input type="text" ng-model="newEntry.name">
</form>
<ul>
<li ng-repeat="entry in entries">
{{entry.name}}
</li>
</ul>
</div>
所以它应该重复数组条目中的四个名称,但它不起作用:我打开日志,我发现了这个错误:
参数'RaffleCtrl'不是函数,未定义
答案 0 :(得分:3)
您必须在application.html.erb
中定义ng-app指令:
<html ng-app="Raffler">
...
</html>
然后在raffle.js.coffee
中替换:
@RaffleCtrl = ($scope) ->
有了这个:
angular.module('Raffler', []).controller "RaffleCtrl", ($scope) ->
您必须在Angular应用程序中设置所需的ng-app
指令 - 这将该元素指定为根元素。在您的应用程序布局中,在 body 或 html 标记之类的高级/根元素上执行此操作。重要提示,您可以指定此指令一次 - 如果您错误地添加了多个,则应用程序中的第一个指定将用于定义根元素。
添加 ng-app 后,使用您在ng-app
中指定的名称指定匹配的根模块。在定义中保留数组为空表示您正在定义模块而不是调用它。使用什么名称并不重要,只需确保它对您的应用程序具有相对描述性,在您的模块中是唯一的,并且您为“ng-”中添加的根模块指定了相同的名称。应用程序。此模块将直接包含您的应用程序代码,或者将依赖于包含它的其他模块。
基本上,您必须为应用程序提供ng-app
属性,指定doc的根元素。然后你必须使用相同的名称创建你的Angular根模块 - &#34; Raffler&#34;在这种情况下。
这应该是相关的,不管FWIW我使用 Rails&#39;&#39; 和 angularjs-rails gem 1.4.4。