2015-10-09 5 views
3

Посетить https://github.com/gsklee/ngStorage.Как использовать ngStorage в angularjs

Мой код имеет 2 частичных элементарных элемента, в partial1 У меня есть 3 поля ввода и данные, введенные в них: 'abc', 'pqr', 'xyz' и при нажатии кнопки Я хочу перенаправить на partial2, где поле ввода заполняется следующей информацией, вычисленной в контроллере «abcpqr», «abxy».

Обе частицы используют localStorage [ngStorage], а в контроллере эти значения вычисляются и попадают в partial2 при нажатии кнопки [ng-click = "functionName()"]. Эта функция имеет логику для выполнения вычислений. как это сделать?

В приложении, которое я создаю, у меня есть 20 + таких полей в обеих частицах, поэтому я не хочу передавать значения, а получаю их в localStorage и доступ оттуда.

+0

[Использование] (https://github.com/gsklee/ngStorage#usage) раздел из вашей ссылки имеет ответ. – Arkantos

+0

@Arkantos Я не знаю, как я могу использовать $ scope. $ Storage = $ localStorage с функцией, а не $ default. –

+0

Я получаю то, что я выдаю, у меня есть, где я держу $ log.debug («запуск и сохранение нового значения» + url); $ timeout (function() { var myWindow = $ window.open ("", "_self"); myWindow.document.write (response.data); }); –

ответ

12

Предполагая, что у вас есть ng-model атрибуты для всех полей, которые вы пытаетесь захватить в частичном формате1, как показано ниже.

Частичное-1

<input type='text' ng-model='pageData.field1' /> 
<input type='text' ng-model='pageData.field2' /> 
<input type='text' ng-model='pageData.field3' /> 

app.js

var myApp = angular.module('app', ['ngStorage']); 

    myApp.controller('Ctrl1', function($scope, $localStorage){ 

     $scope.pageData = {}; 

     $scope.handleClick = function(){ 
      $localStorage.prevPageData = $scope.pageData; 
     }; 

    }); 

    myApp.controller('Ctrl2', function($scope, $localStorage){ 

     $scope.pageData = $localStorage.prevPageData; 

    }); 

Частичное-2

<p>{{pageData.field1}}</p> 
<p>{{pageData.field2}}</p> 
<p>{{pageData.field3}}</p> 

Другой подход:

Но если вы просто хотите отправить данные с одного контроллера на странице 1 другому контроллеру на стр. 2, вы можете сделать это и с помощью службы.

myApp.service('dataService',function(){ 

    var cache; 

    this.saveData = function(data){ 
     cache = data; 
    }; 

    this.retrieveData = function(){ 
     return cache; 
    }; 

}); 

Вводят этот сервис в первом контроллере, чтобы сохранить данные страницы и впрыснуть его снова в своем втором контроллере, чтобы восстановить сохраненные данные страницы.

myApp.controller('Ctrl1', function($scope, dataService){ 

    dataService.saveData($scope.pageData); 

}); 

myApp.controller('Ctrl2', function($scope, dataService){ 

    $scope.pageData = dataService.retrieveData(); 

}); 
+0

Привет, спасибо :) это абсолютно решило мою проблему. Пришлось сделать несколько изменений здесь и их, и было хорошо идти. Благодаря тонну. :) –

+0

Я получаю еще одну ошибку. У меня была кнопка сброса, которая очистила бы localStorage, но после нажатия на нее мой полный код переставал работать. Везде его показывается как {{$ storage.pageA.XYZ}}. Что может быть проблемой? [все другие угловые коды перестали работать сразу после щелчка по сбросу код.] –

+0

'$ storage. $ reset()' работать правильно, вы должны ссылаются на $ localStorage как $ storage на область вашего контроллера. Это доступно? Также вы видите какие-либо ошибки в вкладке «Консоль разработчика» (Tools Tools)? – Arkantos

 Смежные вопросы

  • Нет связанных вопросов^_^