【问题标题】:Reload controller重新加载控制器
【发布时间】:2014-06-07 03:07:24
【问题描述】:

我正在制作一个简单的测试网站,我想知道我们是否可以只重新加载控制器,而无需重新加载整个页面。

<!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>

这里,我正在寻找refresh nav-left。

这是我的组件:

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';
        }
    }
}

【问题讨论】:

    标签: dart angular-dart


    【解决方案1】:

    您可以删除然后重新插入标签。

    您必须编译 HTML 以使 Angular 处理“新”HTML。 看看this questions 的答案是如何做到的。

    【讨论】:

    • 嗯,我真的不明白他想做什么......我删除了我的标签(好的),然后我把它放回去了,什么都没有,我知道。我需要编译以使 Angular 重新启动该组件。但是代码暴露并没有真正帮助我。我在扩展时遇到错误。
    • 您能否提供更多有关您的错误的信息。 Angular 最近发生了很大变化,所以代码可能有点过时了。也许你会发现我对这个问题的回答更容易理解。这就是_compiler(_element.childNodes, _directiveMap)(_injector, _element.childNodes); 这一行的全部内容,其他代码只是为了获取所需的对象和一些小检查。
    • 我的帖子比较完整。你说的是喷油器,我还是不明白它应该做什么。
    • 我在说注射器。 _compiler(...) 让 Angular 处理插入的 HTML 上的标签/指令,并为该 HTML 创建组件/控制器/指令。
    • 我也没有。我在 Angular.Dart 单元测试和 ng-include 实现中找到了一些代码示例,这些示例与我对另一个问题的回答中的指令类似(ng-include 仅插入从 URL 加载的 HTML,而不是字段的值)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2015-02-06
    • 2015-09-21
    • 1970-01-01
    相关资源
    最近更新 更多