Angular js 从一个控制器从另一个控制器继承属性
Angular js inherit properties of one controller form another controller
我是角度的初学者。帮我写这段代码。.
如何将调用控制器的名称属性继承给我的控制器?我不知道如何在这段代码中使用广播...
<script type="text/javascript">
function callme($scope)
{
$scope.name="anand";
}
function mee($scope)
{
$scope.age="34";
}
</script>
<div ng-controller="callme">
<p>Name: <input type="text" ng-model="name"></p>
hello {{name}}!
</div>
<div ng-controller="mee">
<p>age:<input type="text" ng-model="age"></p>
hello {{name}} {{age}}!!!
</div>
因此,您可以使用控制器继承,但这意味着一个控制器需要位于另一个控制器内部。这不是您在示例 HTML 中所做的。
但是,所有控制器共享 1 个 rootScope,因此您可以沿着从 rootscope 向下广播事件到所有控制器的道路。
这是小提琴:http://jsfiddle.net/qabpfbug/2/
var myApp = angular.module('myApp',[]);
myApp.controller('callme', [ '$scope', '$rootScope', function($scope, $rootScope) {
$scope.name = 'John Doe';
$scope.$watch('name', function(newValue, oldValue) {
$rootScope.$broadcast('nameChanged', newValue);
});
}]).controller('mee', [ '$scope', function($scope) {
$scope.$on('nameChanged', function(event, value) {
$scope.name = value;
});
}]);
让我指出几点:
- 以这种方式表示控制器的符号可以使您的代码最小化(无论您想怎么称呼它都丑化)。该数组保存依赖项的名称,然后将其注入控制器函数。
- 因此,首先我们$watch $scope.name 对象。AngularJS将检查此对象的值是否发生变化,并在它发生变化时调用该函数。在这个函数中,我们转到$rootScope并使用新值调用$broadcast。所以这与$emit
- 在"me"控制器上 - 我们正在侦听"nameChanged"事件,并使用提供的值更新该控制器内的 $scope.name 对象。
这是工作小提琴 http://jsfiddle.net/qabpfbug/1/
您可以使用$rootScope但我建议您使用服务来共享数据黑白控制器。
function callme($rootScope)
{
$rootScope.name="anand";
}
function mee($scope)
{
$scope.age="34";
}
相关文章:
- 未激发路由的控制器属性上的观察者
- 将指令绑定到控制器属性
- Ember访问公共路由/控制器mxiin中的控制器属性
- 设置AngularJS控制器属性不能是使用Coffeescript的最后一行
- 设置传递给数组的对象的控制器属性
- 角度单元测试:如何在没有范围的情况下测试控制器属性
- Emberjs - 基于控制器属性进行过滤的奇怪解决方法
- EmberJS:将输入值绑定到控制器属性,并在更改时运行过滤器
- Angular 1.5:访问控制器内部的绑定控制器属性
- 更改路由时将 Ember 控制器属性设置为 false
- 是否可以将“模型”视为 EmberJS 中的特殊控制器属性
- AngularJS - 如何及时刷新控制器属性
- 在路由中设置自定义控制器属性
- Ember绑定属性没有更新,尽管控制器属性更新得很好
- Ember.js设置控制器属性表单组件
- AngularJS中包含HTML的绑定控制器属性
- 从AngularJS中的另一个类访问控制器属性
- 如何将动态单选按钮绑定到Ember中的控制器属性
- Ember.js:属性更改时未调用控制器属性
- 从根节点ng-if访问AngularJs控制器属性