2014-04-22 260 views
1

我正在做一個簡單的測試網站,我知道我們是否可以重新加載控制器,而無需重新加載整個頁面。重新加載控制器

<!DOCTYPE html> 
<html ng-app> 
    <head lang="fr"> 
     <meta charset="UTF-8"> 
     <title>The Office</title> 
     <link rel="stylesheet" href="./css/style.css"> 
     <script type="application/dart" src="main.dart"></script> 
    </head> 
    <body> 
    <div class="wrapper"> 

     <nav nav-left ng-cloak> 
      <header> 
       <div ng-bind-html="user_infos"></div> 
      </header> 
      <ul> 
       <li ng-repeat="content in ctrl.menu_list"><a ng-class="ctrl.menu_class[content]" ng-click="ctrl.itemSelected(content)" href="{{ctrl.getLink(content)}}">{{content}}</a></li> 
      </ul> 
     </nav> 

     <main> 
      <h1>The Office</h1> 
      <ng-view></ng-view> 
     </main> 

    </div> 
    </body> 
</html> 

在這裏,我在找刷新導航左。

這裏是我的組件:

import 'package:angular/angular.dart'; 

@Component(
    selector: 'nav-left', 
    templateUrl: "/view/nav_left.html", 
    cssUrl: "/css/style.css", 
    publishAs: 'ctrl') 
class NavLeft { 
    Scope scope; 
    ... 

    NavLeft(this.scope); 

    void itemSelected(item) { 
     menu_class.forEach((k, v) { 
      menu_class[k] = (v == 'active') ? '' : v; 
      menu_class[k] = (k == item) ? 'active' : ''; 
     }); 
    } 

    String getLink(item) => 
     menu_link[item]; 

在哪裏我試圖刷新

library register; 

import 'package:angular/angular.dart'; 
import 'package:Lawfice/service/ask_Server.dart'; 
import 'package:password_hasher/password_hasher.dart'; 
import 'dart:convert'; 
import 'dart:html'; 

@Controller(
    selector: '[register-module]', 
    publishAs: 'ctrl') 
class registerModule { 
    Router router; 
    Scope scope; 
... 

    registerModule(this.router, this.scope); 

    ... 

    void submit() { 
     if (checked_email == 'OK' && checked_pass == 'OK') { 
      Map<String, Map> data = {}; 
      var hasher = new PasswordHasher(); 
      var hash = hasher.hashPassword(pass1); 

      data['register'] = <String, String>{}; 
      data['register']['email'] = email; 
      data['register']['password'] = hash; 
      _server.send(data).then((msg) { 
       if (msg == 'OK') { 
        router.go('news', {}); 
        querySelector('nav-left').remove(); 
        // What I'm suppose to do here ? 
       } 

      }); 
      btn_class = 'btn btn-progress'; 
     } 
    } 
} 

回答

0

您可以刪除,然後重新插入標籤。

您必須編譯HTML以使Angular進程成爲'新'HTML。 看看this questions的答案如何做到這一點。

+0

嗯,我真的不明白他在做什麼...我刪除了我的標記(OK),然後我把它放回去了,沒有,我知道。我需要編譯以使Angular重新啓動組件。但代碼公開並不真的幫助我。我遇到了擴展錯誤。 – Druxtan

+0

你能否提供一些關於你的錯誤的更多信息?最近Angular發生了很大的變化,所以代碼可能有些過時。也許你會發現我對這個問題的回答更容易理解。這一切都是關於這一行_compiler(_element.childNodes,_directiveMap)(_ injector,_element.childNodes);'其他代碼只是爲了獲得所需的對象和一些小的檢查。 –

+0

我的帖子更完整。你在談論噴油器,我仍然沒有看到它想要做什麼。 – Druxtan

相關問題