2013-08-17 22 views
0

我試圖用angularjs和bootsrap編寫應用程序。我在服務器上使用RoR,SLIM和CoffeeScript用於模板和資產。這是我的索引文件:AngularJS,動態加載的視圖看不到相應的控制器

doctype 
html lang="en" ng-app='my_server' 
    head 
    meta charset="utf-8" 
     meta content="IE=Edge,chrome=1" http-equiv="X-UA-Compatible" 

     title= content_for?(:title) ? yield(:title) : "MyServer" 
     = csrf_meta_tags 
     = stylesheet_link_tag "application", :media => "all" 
     = favicon_link_tag 
     = javascript_include_tag "application" 
    body 
    .navbar.navbar-fluid-top 
     .navbar-inner 
     .container-fluid 
      a.btn.btn-navbar data-target=".nav-collapse" data-toggle="collapse" 
      span.icon-bar 
      span.icon-bar 
      span.icon-bar 
      a.brand href="#" My server 
      .container-fluid.nav-collapse 
      ul.nav 
       li= link_to "Link1", "/path1" 
       li= link_to "Link2", "/path2" 
       li= link_to "Link3", "/path3" 
      /! /.nav-collapse 
    .container-fluid 
     .container-fluid(ng-view) 
     footer 
     p © Company 2013 
    /! /container 

app.js.coffee:

@app = angular.module('my_server', []) 
    .config(['$routeProvider', ($routeProvider) -> @RouteProvider($routeProvider)]) 
    .run(['$rootScope', '$location', ($rootScope, $location) -> 
    ]) 

routes.js.coffee:

@RouteProvider = ($routeProvider) -> 
    $routeProvider.when('/sign_in', {templateUrl: 'assets/sign_in.html', controller: SignInController}) 

sign_in_controller.js.coffee:

@SignInController = ($scope, $routeParams) -> 
    alert("Controller loaded") 
    Auth = -> 
     alert("Auth") 

和sign_in.html.slim,動態加載(i有修改的軌道資產管道配置,這樣我就可以使用SLIM靜態頁面):

.body 
    form 
    fieldset 
     legeng Sign in 
     label 
     input type='email' placeholder='email' ng-model='email' 
     label 
     input type='password' placeholder='password' ng-model='password' 
     button.btn ng-click='Auth()' Auth 

當我試圖去/#/ sign_in我看到我的身份驗證的形式,我看到「控制器裝」信息提示,所以我認爲SignInController已加載。但是當我按下我的表單上的身份驗證按鈕時,我沒有看到「Auth」消息的警報,即控制器方法Auth未被調用。當我試圖寫這樣的事情在SignInController

$scope.email = '[email protected] 

我沒有看到我的形式這封電子郵件。我在瀏覽器控制檯中沒有錯誤或警告。

爲什麼我的部分表單看不到我的控制器?我究竟做錯了什麼?

更新:

控制器的方法必須被定義爲$範圍屬性

回答

0

在auth方法必須是一個範圍屬性。嘗試改變

Auth = -> 
    alert("Auth") 

$scope.Auth = -> 
    alert("Auth")