Angular binding directive的参数指向控制器

时间:2017-10-02 20:22:54

标签: angularjs angularjs-directive angularjs-controller

我无法绑定指令的参数(使用隔离范围)来从指令的自定义控制器访问它们。

请检查这个小提琴(打开控制台,查看记录的结果!)http://jsfiddle.net/xj9gqqxn/4/

<div ng-controller="appCtr">
  <div>
    <div custom-directive param="customer.name">
    <span>{{customer.name}}</span>
    <br/>
    <input type="text" ng-model="customer.name"/>
    </div>
  </div>
</div>

当我在指令的链接函数中登录时,值会被记录,但是当我在控制器的构造函数中执行相同操作时,我将值视为未定义。

如果有人知道如何在指令控制器的构造函数中访问指令的参数值,请分享我犯错误的答案或点......对我来说,我没有进一步的线索......

由于

1 个答案:

答案 0 :(得分:3)

你的控制器与指令的范围相同,所以这样可以正常工作:

app.controller('customController', ['$scope', '$timeout' , function($scope,$timeout) {
    console.log("[customController:new] -  param value is: " + $scope.param);
}])

http://jsfiddle.net/pegla/xj9gqqxn/6/

此外,如果您正在搜索bindToController,因此指令$ scope值绑定到控制器而不是$ scope,您可以这样做:

bindToController: {
            param: '='
        },

更新小提琴: http://jsfiddle.net/pegla/xj9gqqxn/8/