【发布时间】:2016-04-07 01:21:24
【问题描述】:
我一直在尝试将在模板 page1 中单击的对象传递给另一个使用 angular 的名为 page2 的模板。我可以使用 ng-click 访问此对象,但无法将其传递给其他模板。我已经阅读了使用 state.go() 可能有效,但我无法弄清楚这一点。如果 state.go() 不是一个好主意,我应该改用什么?
angular.module('playground', [])
.config(function($stateProvider, $urlRouterProvider) {
"use strict";
/* Set up the states for the application's different sections. */
$stateProvider
.state('page1', {
name: 'page1',
url: '/page1',
templateUrl: 'page1.html',
controller: 'MainCtrl'
})
.state('page2', {
name: 'page2',
url: '/page2',
templateUrl: 'page2.html',
controller: 'MainCtrl'
});
$urlRouterProvider.otherwise('/page1');
})
.controller('MainCtrl', function($scope, $state) {
"use strict";
$scope.add = function(item, $stateParams) {
if ($scope.ordered.indexOf(item) > -1) {
//nothing for now
} else {
$scope.ordered.push(item);
}
console.log($scope.ordered);
};
$scope.ordered = []
$scope.menu = [{
title: 'Pizza',
type: 'entree',
favorite: true,
price: 10
}, {
title: 'Tacos',
type: 'entree',
favorite: false,
price: 5
}, {
title: 'Onion Rings',
type: 'app',
favorite: false,
price: 2
}, {
title: 'Ice Cream',
type: 'dessert',
favorite: false,
price: 11
}, {
title: 'Mac n Cheese',
type: 'app',
favorite: false,
price: 7
}, {
title: 'Salad',
type: 'salad',
favorite: true,
price: 4
}];
$scope.ordered = [];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="playground" ng-controller="MainCtrl">
<script id="page1.html" type="text/ng-template">
<div ng-repeat="item in menu">
<p>{{item.title}}</p>
<p>{{item.type}}</p>
<button ng-click="add(item);">add</button>
</div>
</script>
<script id="page2.html" type="text/ng-template">
<div ng-repeat="item in ordered">
<p>{{item.title}}</p>
<p>{{item.type}}</p>
<button>remove</button>
</div>
</script>
</body>
【问题讨论】:
标签: javascript angularjs object