AngularJS - $ emit未传递实际值

时间:2014-03-09 18:46:29

标签: angularjs

这是我从html页面调用的html方法:

data-ng-click="handleNav('{{subItem.module}}','{{subItem.url}}')">{{subItem.name}}</a>

从用户的角度来看,源代码看到了这一点:

data-ng-click="handleNav('Mod1','inserts/Pages/Default')" class="ng-binding">Sub 1</a>

然而在我的孩子控制器发出呼叫:

        $scope.handleNav = function (args1, args2) {
        console.log(args1);
        console.log(args2);
        $scope.$emit('changeView', (args1, args2));
    };

.....这些是控制台日志的值:

   {{subItem.module}}
   {{subItem.url}} 

.....应该是什么时候:

    Mod1
    inserts/Pages/Default

谁能看到我做错了什么?

由于

3 个答案:

答案 0 :(得分:1)

您正在尝试为ng-click插入({{x}})变量,但它不需要它。想想ng-click就像javascript代码一样。它可以访问您的范围变量等。

要解决问题,请删除'{{以及}}

<a data-ng-click="handleNav(subItem.module, subItem.url)">{{subItem.name}}</a>

答案 1 :(得分:0)

您将值放在单引号中,这是不评估表达式的指标。因此,变量作为字符串而不是它们的值传递

答案 2 :(得分:0)

我找到了解决方案:

 data-ng-click="handleNav(subItem.module,subItem.url)">{{subItem.name}}</a>

最奇怪的是,因为如果我没有使用$ emit并且在子控制器中处理导航的实际功能一切都会很好,并且处理此导航的父控制器中的函数基本上与儿童控制器。