如何在Angular指令的链接函数中引用一个值?

时间:2016-11-18 16:55:26

标签: javascript angularjs directive

我已为我的Angular应用定义了一个名为value的{​​{1}}。我想从我所拥有的指令的myValue方法访问myValue,但我无法完成这项工作。这是我的代码:

link

你有什么建议吗?

提前谢谢。

3 个答案:

答案 0 :(得分:1)

只需在函数内使用它:

  scope.myFunction = function() {
    console.log(myValue);
  }

它将使用angularjs DI注入指令函数,并可通过闭包在myFunction内访问。

答案 1 :(得分:0)

您也可以使用constant。只需定义它并传递给您的指令。 valueFromYourConstant - 是一个如何访问常量值的示例。

angular
    .module('extApp')
    .constant('CONSTANT_NAME', {
        values: {
              "foo": null,
              "bar": null
        }
    })
    .directive('myDirective', ['constants', 'myValue', 'CONSTANT_NAME' function(constants, myValue, CONSTANT_NAME) {
        var valueFromYourConstant = CONSTANT_NAME.values["foo"];
    }

答案 2 :(得分:0)

您可以通过要求ngModel来访问放置指令的元素的ng-model。还可以使用scope.variableName

访问其他范围变量

您可以参考以下示例代码,其中有两个输入字段,一个用于密码,另一个用于确认密码。该指令只是将确认密码与原始密码匹配,并将控制器变量passmatch设置为true或false:

我的指示:

app.directive('matchPassword', function() {
                    return {
                    restrict: 'A',
                    require: 'ngModel',
                        link: function(scope, element, attr, ctrl) {
                        function passwordMatcher(ngModelValue) {

                        if (ngModelValue == scope.password) {
                        ctrl.$setValidity('passMatch', true);
                        } else {
                        ctrl.$setValidity('passMatch', false);
                        }
                        return ngModelValue;
                        }

                        ctrl.$parsers.push(passwordMatcher);
                        }
                    };
                });

我的HTML:

<div class="form-group form-group-default">
                    <label>Password</label>
                    <input type="password" name="password" ng-model="password" placeholder="Minimum of 6 Characters" class="form-control" valid-password required>
                  </div>

    <div class="form-group form-group-default">
                        <label>Confirm Password</label>
                        <input type="password" name="cpassword" ng-model="cpassword" placeholder="Confirm password" class="form-control" match-password required>
                      </div>