AngularJS - 如何从输入区域保存文本? localStorage的?

时间:2016-09-24 21:02:55

标签: angularjs tinymce local-storage

所以我正在为用户添加备注区域。用户将能够输入他们想要的任何内容并点击保存。保存适用于整个页面,但重置的输入区域除外。我唯一能想到的是ui-tinymcelocalStorage ??关于如何保存和存储输入区div的任何输入?此外,它应该在同一页面上完成,因为它与特定订单有关。每个订单的输入区域都有不同的注释。

HTML

<div ng-if="'confirmation' != page && editable" class="col-xs-12 col-md-6">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3>Notes</h3>
        </div>
        <div class="panel-body">
            <div align="center">
               <input  placeholder="Notes" ng-model="myNotes.notes" class="notes">
            </div>
        </div>
    </div>
</div>

JS

$scope.myNotes = {};

更新:让我为此问题添加更多内容。所以我得到了它的工作,有点,我能够通过电话后成功保存我的'ui-tiny-mce'。我将在工作页面下方发布,该页面将保存来自'ui-tiny-mce'的文本。现在的问题是,它保存了文本。但是每个订单都有一个'ui-tiny-mce'框,当我保存一个时,它会将相同的数据保存到所有订单页面中的所有'ui-tiny-mce'框中。

HTML

  <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">Notes <button ng-click="saveNotes()">Save Notes</button></h3>
            </div>
            <div class="panel-body">
                <div class="form-group">
                    <textarea ui-tinymce="tinymceOptions2" ng-model="myNotes.notes"></textarea>
                </div>
            </div>
        </div>

JS控制器

  $scope.myNotes = {};
  $scope.saveNotes = function () {
        $http.post('api/settingsController.php/write',$scope.settings).success(function () {
            toastr.success('Notes Saved');
        });
    };

PHP

$app->post('/write', function(\Symfony\Component\HttpFoundation\Request $request) use ($app) {
$document = json_decode($request->getContent(), true);
unset($document['_id']);

$document['sid'] = $_SESSION['sid'];
$app['mongoOrders']->update(['sid'=>$_SESSION['sid']], $document, ['upsert'=>true]);

return $app->json($document);});

3 个答案:

答案 0 :(得分:0)

有一个Angular模块,ngStorage使得使用本地存储变得更简单 - 基本上你可以将数据绑定到localstorage元素。

https://github.com/gsklee/ngStorage

答案 1 :(得分:0)

UI Tinymce是一个用于在浏览器中编辑文本的框架,而本地存储是临时数据存储的解决方案......它们不具有可比性。您可以使用UI Tinymce进行编辑,然后使用本地存储来保存UI Tinymce中的数据,这可能有效。虽然您应该预先警告使用本地存储(或任何客户端存​​储解决方案)仅在使用清除其浏览器缓存/ cookie /存储之前有效。如果您计划制作Web应用程序,则更好的解决方案是将数据存储在服务器上的索引数据库中,而不是为您的应用程序提供服务。这样,用户就不会意外删除他们的数据。你甚至可以使用UI Tinymce。

答案 2 :(得分:-1)

因此,如果您想在刷新页面后保留数据,则可以选择几个选项。

选项1(好):

保存当前记事,并通过路径访问它。您需要确保已将 ngRoute 添加到您应用的模块中:

angular.module('app', ['ngRoute']);

并且您已将 ngRoute 添加到您的脚本中:

<script src="path/to/angular-route.js"></script>  // must be loaded in after angular.js

https://docs.angularjs.org/api/ngRoute

,然后将路由添加到您的配置: https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

选项2(好的):

将注释保存为 window.localStorage 对象添加的字符串化JSON。 https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

此选项存在的问题是,它更容易出现陈旧数据。

选项3(不太好)

直接将注释附加到窗口对象。