Javascript AngularJS如何使用ng选项更新选择框中的嵌套模型
尝试通过选择下拉框更新同级控制器中的模型Javascript AngularJS如何使用ng选项更新选择框中的嵌套模型,javascript,angularjs,ng-options,Javascript,Angularjs,Ng Options,尝试通过选择下拉框更新同级控制器中的模型 <div ng-app="myapp"> <fieldset ng-controller="FirstCtrl"> FirstCtrl Person: {{selectedPerson.last}}<br> <select ng-options="p.first + ' ' + p.last for p in people" ng-model="selectedP
<div ng-app="myapp">
<fieldset ng-controller="FirstCtrl">
FirstCtrl Person: {{selectedPerson.last}}<br>
<select
ng-options="p.first + ' ' + p.last for p in people"
ng-model="selectedPerson"></select>
{{ selectedPerson }}
</fieldset>
<div ng-controller="SecondCtrl">
SecondCtrl Person: {{selectedPerson.last}}<br>
</div>
我尝试了几种解决方案工厂、服务,它们在输入字段中工作得很好,但在选择框中却不行。
我做了一个简单的决定
如何以一种简单而有角度的方式实现这一点 最后,这里有一个小技巧,两个控制器没有父/子关系。 它应该通过$rootScope和$broadcast方法从一个控制器传递数据 app.js index.html
我已经更新了。我没有得到您的确切要求
var myapp = angular.module('myapp', []);
myapp.controller('FirstCtrl', function ($rootScope,$scope) {
$scope.selectedPerson = null;
$scope.people = [
{ id: 1, first: 'John', last: 'Rambo', actor: 'Silvester' },
{ id: 2, first: 'Rocky', last: 'Balboa', actor: 'Silvester' },
{ id: 3, first: 'John', last: 'Kimble', actor: 'Arnold' },
{ id: 4, first: 'Ben', last: 'Richards', actor: 'Arnold' }
];
$rootScope.updatePerson = function(){
$rootScope.$broadcast('update_SecondCtrl', $scope.selectedPerson);
}
});
myapp.controller('SecondCtrl', function ($rootScope,$scope) {
$scope.selectedPerson = null;
$scope.people = [
{ id: 1, first: 'John', last: 'Rambo', actor: 'Silvester' },
{ id: 2, first: 'Rocky', last: 'Balboa', actor: 'Silvester' },
{ id: 3, first: 'John', last: 'Kimble', actor: 'Arnold' },
{ id: 4, first: 'Ben', last: 'Richards', actor: 'Arnold' }
];
$rootScope.$on("update_SecondCtrl", function(event, selectedPerson) {
$scope.selectedPerson = selectedPerson;
});
});
<div ng-app="myapp">
<fieldset ng-controller="FirstCtrl">
<select
ng-options="p.first + ' ' + p.last for p in people"
ng-model="selectedPerson"
ng-change="updatePerson()"
></select>
</fieldset>
<fieldset ng-controller="SecondCtrl">
<select
ng-options="p.first + ' ' + p.last group by p.actor for p in people"
ng-model="selectedPerson"></select>
{{ selectedPerson }}
</fieldset>