angular.js:路由到当前文章的编辑器版本

时间:2015-05-08 02:14:30

标签: javascript angularjs

我有一些相同类别的文章,我的路由如下:

app.config(function($routeProvider) {
    $routeProvider
    .when('/chapter/:title', {
        templateUrl: 'article.html',
        controller: 'article'
    });
});

article.html:

<h1>{{title}}</h1>
<p>{{content}}</p>
<button>Editor</button>

但是现在我想从本章的每篇文章到编辑器版本来改变内容。这个编辑器版本可能如下所示:

editor_article.html:

<input type="text" value="{{title}}">
<textarea>{{content}}</textarea>

那么将文章按钮路由到editor_article.html模板并使用相同数据加载它的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

没有&#34;最好的方式&#34;在这里,这一切都取决于你的背景。

所有最终用户是否都可以平等访问(或者换一种方式,如果允许任何可以打开开发控制台的人访问此页面)?

如果没有,您需要在加载SPA的大部分代码之前解决登录问题

如果登录不是问题或已经处理,为什么需要单独的路线? 您是否需要在浏览器中单独缓存这些页面?
还有其他考虑因素吗?
完全合情合理的问题;从艺术的角度来看,也许你希望页面转换能够与改变路线时的其他转换相匹配,或者你依靠routeParams来实现我们不会做的某些逻辑。我知道。

但除了上述所有内容之外,你可以简单地使用一个按钮和几个带有指令的ng-if语句。

<body >
    <main ng-view></main>
</body>

<!-- template -->
<section >
    <button
        ng-click="article.toggleMode()">{{
          article.editMode ? "View": "Edit"
    }}</button>
    <article-view
        content="article.content"
        ng-if="!article.editMode"
    ></article-view>
    <article-edit
        content="article.content"
        onsave="article.save(content)"
        ng-if="article.editMode"
    ></article-edit>
</section>

使用指令定义两个模板,在上面的示例中使用controllerAs:"article"

即使这可能会让它变得复杂。