Как открыть новое окно и передеать данные в другой контроллер?
Всем привет!
У меня есть таблица с кучей столбцов. По двойному клику у меня должно открыться другое окно с формой, которая частично заполнена данных из строки, по которой кликнули. Как мне передать данные?
<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, время: 18:57. |