我被某些東西卡住了(我一直在閱讀類似的問題,但是沒有人會讓我看到解決方案)。 我有2個DOM元素(讓我們說2 div)與不同的id,但相同的ng控制器(這是基本的例子,在我的真實應用程序,我有2個不同的頁面,但工作原理相同)。
<div id="layer1" ng-controller="appCtrl">
<select ng-model="selectedType" ng-options="type.label for type in ptype track by type.value" ng-change="changeType(selectedType.value)"></select>
</div>
<div id="layer2" ng-controller="appCtrl">
<select ng-model="selectedType" ng-options="type.label for type in ptype track by type.value" ng-change="changeType(selectedType.value)"></select>
</div>
而且在JS
var myAppModule = angular.module('myApp', [])
.factory('selectedType', function(){
return{}
})
.controller('appCtrl', ['$scope',function($scope){
$scope.ptype = [
{
value: 1,
label:'Kg'
},
{
value: 2,
label:'Pza'
}];
selectedType = $scope.ptype[0];
$scope.changeType = function(value){
if(value==1){selectedType = $scope.ptype[0];}
else{selectedType=$scope.ptype[1];}
};
}])
正如你可以看到我對SELECT和NG-模式的選項,我需要的是,當改變任何SELECT(選擇的值不另一方面DIV)另一方得到更新。
這裏是代碼爲SEE HERE的Plunker。 謝謝!
你並沒有意識到每個'ng-controller'都是一個新的'AppCtrl'獨立實例。使用服務在不同控制器之間共享數據或保持同一實例或不太可取的方法是將'$ scope.ptype'聲明移動到父控制器,該控制器封裝了將從父繼承的兩個實例 – charlietfl