我怎么能在Angular控制器中有两个$作用域变量呢?
How can I have two $scoped variables in an Angular controller?
我正在创建一个带有rails后端的angular应用程序,并通过api调用访问数据库并接收json对象。我在控制器中定义多个作用域变量时遇到了麻烦。我目前返回一个变量市场,其中包含所有的市场在数据库-这是我的索引。我也试图进入一个单一的市场展示页面,这是我有麻烦的地方。最初我有2个独立的控制器,但似乎不正确。
谢谢!
路线:
angular.module('farmCart', ['ui.router', 'templates'])
.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'home/_home.html',
controller: 'mainCtrl',
})
.state('markets', {
url: '/markets',
templateUrl: 'markets/_markets.html',
controller: 'marketsCtrl',
resolve: {
marketsPromise: ['markets', function(markets) {
return markets.getAll();
},
],
},
})
.state('market', {
url: '/markets/{id}',
templateUrl: 'markets/_market.html',
controller: 'marketsCtrl',
resolve: {
market: ['$stateParams', 'markets', function($stateParams, markets) {
return markets.get($stateParams.id);
},
],
},
})
.state('booths', {
url: '/booths/{id}',
templateUrl: 'booths/_booths.html',
controller: 'boothsCtrl',
resolve: {
booth: ['$stateParams', 'booths', function($stateParams, booths) {
return booths.get($stateParams.id);
},
],
},
});
$urlRouterProvider.otherwise('home');
},
]);
市场工厂:
angular.module('farmCart')
.factory('markets', [
'$http',
function($http) {
var o = {
markets: [],
};
o.getAll = function() {
return $http.get('/markets.json').success(function(data) {
angular.copy(data, o.markets);
});
};
o.get = function(id) {
return $http.get('/markets/' + id + '.json').then(function(res) {
return res.data;
});
};
return o;
},
]);
市场控制器:
angular.module('farmCart')
.controller('marketsCtrl', [
'$scope',
'markets',
function($scope, markets) {
$scope.markets = markets.markets;
$scope.market = markets.markets.id;
},
]);
你的解析命名为marketsPromise
和market
,你实际上没有注入到你的控制器。我建议你使用两个控制器,因为这两种状态似乎有不同的用途。
angular.module('farmCart')
.controller('marketsCtrl', [
'$scope',
'marketsPromise',
function($scope, marketsPromise) {
$scope.markets = marketsPromise;
},
]);
angular.module('farmCart')
.controller('marketCtrl', [
'$scope',
'market',
function($scope, market) {
$scope.market = market;
},
]);
另外,你可能要重新考虑marketsPromise
解析的名称,因为ui-router会注入数据本身,而不是承诺,这可能会导致混乱。
相关文章:
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 如何在angularjs中将多个作用域变量传递到自定义指令中
- 函数来检查给定整数数组中给定位置的元素是否大于其两个邻域
- JQuery UI 可拖放,具有多个作用域
- Angularjs 连接两个作用域数组
- AngularJS ng重复过滤器根据作用域有两个不同的参数
- 如何在AngularJS中将数据从同一服务加载到两个不同的作用域变量
- 我怎么能在Angular控制器中有两个$作用域变量呢?
- 我有两个具有相同代码的不同域,但其中一个不起作用.为什么
- 根据用户输入声明多个作用域
- Angular中两个不同的指令在同一个控制器上共享作用域
- Angularjs:在两个指令之间失去作用域
- 如何在angularjs中使用两个不同的ui路由器在状态之间共享作用域数据?
- 保存/恢复angularjs的几个作用域变量
- AngularJS:在两个具有隔离作用域的指令之间共享一个控制器作用域
- AngularJS:通过服务在两个作用域/控制器之间进行双向通信
- 像Rhino一样,对多个作用域编译一次
- 上和多个作用域
- 深度拷贝(解绑定)两个作用域变量——AngularJS