AngularJS从其他控制器更新$ scope

时间:2015-09-11 11:39:08

标签: javascript angularjs

我有以下问题:

在我的控制器中,我有类似的东西:

$scope.current = 0;

我有一些看起来像这样的指示:

angular.module('myAPP')
    .directive('post', function() {
        return {
            restrict: 'EA',
            replace: true,
            scope: {
                post: '=',
                index: '='
            },

        link: function(scope) {
          //update the $scope.current here
        },
        templateUrl: 'components/blog/post.html'
    };
});

有人可以解释我最好的方法吗,它可以更新链接功能中的$ scope吗?

谢谢!

2 个答案:

答案 0 :(得分:6)

您的指令有一个孤立scope

要从指令更改current,必须将其与指令范围变量绑定,如此

喜欢这个

<强> HTML

<post index="current"></post>

<强> JS

link: function(scope) {
   scope.index=2;
},

答案 1 :(得分:1)

您需要使用operator precedence。它应该是这样的:

$arr = array(array((0)=>('Afghanistan'),(1)=>(93),(2)=>(0.2),(3)=>(2015-06-09)),
array((0)=>('Afghanistan Cdma Afghan Telecom'),(1)=>(9375),(2)=>(0.22),(3)=>(2015-03-31)),
array((0)=>('Afghanistan mobile'),(1)=>(937),(2)=>(0.158),(3)=>(2015-03-31)));

$search = '93';

foreach($arr as $value):
if(in_array($search, $value)):

echo "<td>".$value[0]."</td>";
echo "<td>".$value[1]."</td>";
echo "<td>".$value[2]."</td>";
echo "<td>".$value[3]."</td>";

endif;
endforeach;

在您的控制器中,您将向您的指令发送通知事件:

angular.module('myAPP')
    .directive('post', function() {
        return {
            restrict: 'EA',
            replace: true,
            scope: {
                post: '=',
                index: '='
            },

        link: function(scope) {
          $scope.on('my-event', function(value){
             $scope.current = value;
          });
          //update the $scope.current here
        },
        templateUrl: 'components/play/questions/simple-question.html'
    };
});

如果您的指令位于控制器之外,则需要使用$scope.emit('my-event', $scope.current);