Ruby on rails 不同视图中的Angularjs通信控制器-Rails
我需要一个技巧如何在Rails的不同视图中连接两个控制器。 我的索引中有项目和购物车,当我单击“新建”选项卡中的项目并将项目添加到购物车时,我希望将此项目添加到购物车而不刷新它Ruby on rails 不同视图中的Angularjs通信控制器-Rails,ruby-on-rails,ruby,angularjs,controller,Ruby On Rails,Ruby,Angularjs,Controller,我需要一个技巧如何在Rails的不同视图中连接两个控制器。 我的索引中有项目和购物车,当我单击“新建”选项卡中的项目并将项目添加到购物车时,我希望将此项目添加到购物车而不刷新它 app.controller('LineItemsController', ['$scope', '$rootScope', '$controller', 'LineItems', function($scope, $rootScope, $controller, LineItems) { $co
app.controller('LineItemsController', ['$scope', '$rootScope', '$controller', 'LineItems',
function($scope, $rootScope, $controller, LineItems) {
$controller('CartsController', {
$scope: $scope
});
$scope.fetchLineItems = function() {
LineItems.get({
cartId: cartId
}).then(
function(results) {
$scope.lineItems = results;
},
function(error) {}
)
};
$scope.fetchLineItems();
$scope.$on('scanner-started', function(event, args) {
console.log("alert");
$scope.fetchLineItems();
});
}
]);
app.controller('LineItemController', ['$scope', '$rootScope', '$controller', 'LineItem',
function($scope, $rootScope, $controller, LineItem) {
$controller('LineItemsController', {
$scope: $scope
});
$scope.addItem = function() {
new LineItem({
itemId: window.Id
}).create().then(
function(results) {
$scope.linkUpdated = true;
$rootScope.$broadcast('scanner-started');
},
function(error) {
$scope.errors = true;
$scope.linkUpdated = false;
}
)
};
}
]);
app.factory('LineItem', ['railsResourceFactory',
function(railsResourceFactory) {
return railsResourceFactory({
url: '/items/{{itemId}}/line_items',
title: 'line_item'
});
}
]);
app.factory('LineItems', ['railsResourceFactory',
function(railsResourceFactory) {
return railsResourceFactory({
url: '/carts/{{cartId}}/line_items',
title: 'line_item'
});
}
]);
我的代码看起来像这样,我添加了$broadcast和$on,但它只在我的show视图上工作,而不是索引
是否有类似$scope refresh或类似的东西可以提供给我的索引?您可以包装简单的服务
yourApp.factory('someService', function() {
var data = {};
return {
getData: function() {
return data;
},
setData: function(value) {
data = value;
}
};
});
然后在一个控制器中设置数据:
someService.setData($scope.yourValue);
然后从服务中获取此值:
someService.getData();
或在功能中执行$wath
:
$scope.$watch(function() {
optimizerData.getData();
}, function(newValue) {
console.log(newValue);
});