0
的jsfiddle:http://jsfiddle.net/s0ngtz8j/計算場所在外部範圍
我有一個外控制器:OuterCtrl。屬性「名稱」在OuterCtrl的範圍內。
在OuterCtrl的範圍,我有內部控制器:InnerCtrl。屬性「後綴」在InnerCtrl的範圍內。
我需要在外部和內部控制器的計算屬性FullName(=名稱+後綴)。在上面給出的jsfiddle中,我可以在InnerCtrl中獲得FullName。我如何使它在OuterCtrl中可用?
HTML:
<div ng-app="myApp">
<div ng-controller="OuterCtrl">
Name: <input type="text" ng-model="Name">
<br>
(Outer) Name : <strong>{{Name}}</strong>
<br>
(Outer) Full Name: {{FullName}}
<div ng-controller="InnerCtrl">
Suffix: <input type="text" ng-model="Suffix">
<br>
(Inner) Name: {{Name}}
<br>
(Inner) Full Name: {{FullName}}
</div>
</div>
</div>
JS:
var myApp = angular.module('myApp', []);
myApp.controller('OuterCtrl', function ($scope) {
$scope.Name = "Adam";
});
myApp.controller('InnerCtrl', function ($scope) {
$scope.Suffix = "Jr.";
$scope.FullName = $scope.Name + " " + $scope.Suffix;
$scope.$watch('Name + Suffix', function() {
$scope.FullName = $scope.Name +' '+$scope.Suffix;
});
});
這是增強一個複雜的應用程序,我的工作的簡化問題。名稱屬性必須留在OuterCtrl中。後綴必須留在InnerCtrl中。 FullName是我需要添加的一項新功能,可以放在任何地方。要解決
感謝您的回覆。但這個問題是我工作的商業應用程序的簡化版本。那麼是否通過在OuterCtrl中維護名稱並在InnerCtrl中保留後綴來添加新代碼? FullName是我可以在任何地方保留的新功能..可能位於共享工廠中。你能否指出如何解決這個問題。 – Ferny 2015-03-31 23:42:00
@Ferny是的,你可以擁有所有的邏輯子控制器與後綴,所有的交易,只要編輯'$ scope.dude.something',而不是直接'$ scope.something',這些變化將是可訪問的還來自父控制器。 – floribon 2015-03-31 23:43:33
@Ferny檢查更新的jsfiddle,讓我知道這是否回答您的問題http://jsfiddle.net/83stdLy4/1/ – floribon 2015-03-31 23:44:31