Как открыть новое окно и передеать данные в другой контроллер?
Всем привет!
У меня есть таблица с кучей столбцов. По двойному клику у меня должно открыться другое окно с формой, которая частично заполнена данных из строки, по которой кликнули. Как мне передать данные? <div ng-controller="myController" class="form"> <div class="col-sm-12"> <div ng-grid="myTable" class="gridStyle"></div> </div> </div> 'use strict' angular.module('app.controllers', ['ngGrid']) .controller('myController', [ '$scope' '$http' '$window' ($scope, $http ,$window) -> $scope.data = [] $scope.selectedRow = [] $http.get("http://localhost:4444/data.json") .success( (data) -> $scope.data = data ) $scope.myTable= { data: 'data' selectedItem: $scope.selectedRow rowTemplate: '<div ng-dblclick="showForm()" ng-style="{\'cursor\': row.cursor, \'z-index\': col.zIndex() }" ng-repeat="col in renderedColumns" ng-class="col.colIndex()" class="ngCell {{col.cellClass}}" ng-cell></div>', columnDefs: [ {field: "id", displayName: "Номер"} {field: "date_doc", displayName: "Дата создания"} {field: "frm.name", displayName: "Фирма"} {field: "bnk.name", displayName: "Банк"} {field: "npp", displayName: "ПП"} {field: "comment", displayName: "comment"} ] } $scope.showForm = () -> $window.open('http://localhost:4444/#/myForm') ]) |
Цитата:
P.S. Когда же "вы" научитесь делать тестовые примеры... :cray: |
Цитата:
А как тогда принимать? и в каком формате правильно передавать? Можно как-нибудь через JSON? |
Если домен тот же, то через объектную модель window можешь спокойно передать.
window.data = {'любые': 'данные'}; |
Цитата:
<!DOCTYPE html> <html ng-app> <head> <script src="http://code.angularjs.org/1.1.4/angular.min.js"></script> <!-- <script src='http://code.jquery.com/jquery-latest.js'></script> <link rel='stylesheet type=text/css href=tmp.css' /> --> <style type='text/css'> </style> <script type='text/javascript'> function ctrl($scope){ $scope.data=[ {id: 1, name: 'Иван'}, {id: 2, name: 'Семен'}, {id: 3, name: 'Игорь'}, ]; $scope.send=function(Id){ alert('Посылаем ИД='+Id); }; }; </script> </head> <body ng-controller='ctrl'> <ul> <li ng-repeat='o in data' ng-click='send(o.id);'>{{o.name}}</li> </ul> </body> </html> Зная параметры - формируешь УРЛ и открываешь окно. По тому УРЛ нужно настроить распознавание Как в учебном примере... var phonecatApp = angular.module('phonecatApp', [ 'ngRoute', 'phonecatControllers', 'phonecatFilters' ]); phonecatApp.config(['$routeProvider', function($routeProvider) { $routeProvider. when('/phones', { templateUrl: 'partials/phone-list.html', controller: 'PhoneListCtrl' }). when('/phones/:phoneId', { templateUrl: 'partials/phone-detail.html', controller: 'PhoneDetailCtrl' }). otherwise({ redirectTo: '/phones' }); }]); Там передают phoneId Потом "принимающий" контроллер увидит те параметры phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams', '$http', function($scope, $routeParams, $http) { $http.get('phones/' + $routeParams.phoneId + '.json').success(function(data) { $scope.phone = data; $scope.mainImageUrl = data.images[0]; }); $scope.setImage = function(imageUrl) { $scope.mainImageUrl = imageUrl; } }]); В $routeParams.phoneId... Вот нечто такое... |
Цитата:
-- Вот, кстати, пример как у меня строки из грида (такого же как у тебя) на боковую отображаются. Я там сделал одну автоформу на все таблицы. Форма берёт на вход два объекта (1) отображаемую строку таблицы (которая $scope.selectedRow) и (2) объект-описатетель полей columnDefs (тот-же самый который в гриде используется), и по ним строит своё отображение. Одна форма-viewer обслуживает пятьдесят таблиц (таблицы выбираются в левой выдвижной панели, покликай там), - вот это по нашему... ;) Сейчас собираюсь аналогичный подход организовать для автоформы редактирования. В той же самой боковой панели. -- В любом случае, Цитата:
Цитата:
|
К сожалению, новое окно принципиально ((
|
Часовой пояс GMT +3, время: 04:30. |