2014-04-22 262 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

相关问题