0

我有 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 也不会被传递。

任何想法如何做到这一点?

4

2 回答 2

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.
          });
    };       
});
于 2013-08-08T05:39:53.027 回答
0

相反,定义一些保存数据的服务;最初,将服务注入 TTController,然后修改/填充数据,然后将相同的服务注入 SSController.. :) 与指令和控制器相比,服务的使用更好。顺便说一下,服务更好意味着提供数据.. :)

于 2013-08-08T06:49:55.467 回答