我有2个控制器。 我得到一个复合JS对象,它有一些元素+ JS对象+来自第一个控制器的众多数组
我想分别用各种数组对象多次初始化第二个控制器。
我正在使用此代码对第二个控制器进行初始化。
app.controller('SSController', function($scope) {
$scope.init = function(initData)
{
$scope.initData = initData;
};
<div ng-controller="TTController">
<div ng-controller="SSController" ng-init='init({currData})'>
</div>
</div>
其中currData是TTController的范围对象的属性。
如果我在init中传递一个硬编码的数字,它会被传递,但不会传递给currData对象。即使是来自currData的整数值,例如currData.id也没有被传递。
如何做到这一点?
答案 0 :(得分:1)
我认为你应该写一个指令而不是一个控制器。请考虑以下模式。
<div ng-controller="TTController">
<div my-process-array="dataToWatch">
</div>
</div>
然后
app.directive('myProcessArray', function(){
return function(scope, elem, attrs){
elem.bind('click', function(){
// do click stuff
});
scope.$watch(attrs.myProcessArray, function(newdata, olddata){
// do stuff with data from the parent controller.
});
};
});
答案 1 :(得分:0)
相反,定义一些保存数据的服务;最初,将服务注入TTController,然后修改/填写数据,然后将相同的服务注入SSController .. :)与指令和控制器相比,使用服务更好..顺便说一下服务是更好的方式意味着提供数据.. :))