我尝试使用ng-click工厂将值从controller1传递到controller2,现在我添加了路由
var app = angular.module("myApp", ['ui.router']);
app.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('ShowData', {
url: '/ShowData',
templateUrl: '../Pages/Show.html'
})
.state('EditData', {
url: '/EditData',
controller:'Editctrl',
templateUrl: '../Pages/Edit.html'
})
});
app.controller('Controller1', function ($scope, $http, Phyfactory) {
//Here I am calling a factory
$scope.open = function (name) {
var message = name;
console.log('Hcpname', message);
Phyfactory.set(message);
$location.url('/EditData');
// this is my second controller
app.controller('Editctrl', function ($scope, Phyfactory) {
alert('cntrl2');
$scope.fks = Phyfactory.get();
});
我想将此值绑定到文本框
<div ng-controller="Controller2">
Name: <input type="text" ng-model="fks" />
</div>
//这是我的工厂
app.factory("Phyfactory", function () {
var phyname = {};
function set(data) {
phyname = data;
alert('Inside set :' + phyname);
}
function get() {
alert('Inside get :' + Object.values(phyname));
return phyname;
}
return {
set: set,get:get
}
})
根据请求为controller1添加HTML部分,我在td
中调用ng-click <div ng-app="myApp" ng-controller="controller1"
<table class="wtable">
<tr>
<th class="wth">
A
</th>
<th class="wth">
B
</th>
</tr>
<tr ng-repeat="tab in Phyperform | filter:search.view_nm|filter:search.time_period|filter:search.team_nm">
<td class="wtd" ><a ng-click="open(tab.A)"> {{tab.A}} </a> </td>
<td class="wtd"> {{tab.B}} </td>
</tr>
</table>
值不会传递给controller2
,也不会重定向。
有什么想法吗?
答案 0 :(得分:0)
window.location.href
将重定向到应用程序之外,您必须使用$ location路由。
当然,在控制器之间传递数据的更好方法是使用事件!
使用如下事件:
这是控制器2中的事件接收器:
$scope.$on('myCustomEvent', function (event, data) {
console.log(data); // 'Data to send'
});
这是控制器1中的发件人事件:
$scope.$emit('myCustomEvent', 'Data to send');
答案 1 :(得分:0)
信用转到此帖子“Sharing Data between pages in AngularJS returning empty”
我可以使用sessionStorage。