控制器范围变量未在指令中更新

时间:2014-05-26 12:42:39

标签: angularjs

我尝试从指令更新变量的值,但是当我在函数中使用它时,它是未定义的。

指令:

link: function (scope, elem, attrs) {
    elem.bind('click', function () {
        scope.$apply(function () {
            scope.UserName = elem.html();
        });

        scope.$apply("MyFunc()");
    });
}

控制器:

$scope.MyFunc = function myfunction() {
    OrderService.ServiceFunc($scope.UserName, $scope.Param2).success(
    function (data) {
        $scope.MyData= data;
    });
}

在控制器中,$ scope.UserName未定义。

我尝试使用范围。$ apply()(在几个版本中) - 没有帮助。 还有“范围。$ apply(”MyFunc()“);”执行在控制器范围内定义的函数,但由于某种原因,我不会影响我的范围变量。

当我在这个变量+ alert上添加$ watch时 - 它唯一一次警告只是在它未定义的开始时,尽管调试显示代码在指令中值发生变化时到达行( $ watch没有提醒那一刻)

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以通过属性将指令挂钩到函数。

看看这个例子,添加一个带有$ apply按钮结构的指令 http://plnkr.co/edit/ZrSkaT0yuB4UWKH8h2Mn?p=preview

你基本上在你的指令中创建一个属性,将它绑定到该函数,然后基本上将其应用于单击绑定。