使用参数@创建指令

时间:2014-07-25 07:48:58

标签: angularjs angularjs-directive

这是我的代码:

restaurantApp.directive("formfield", function(){
return {
    restrict: "E",
    $scope: {
        formType: "@"
    },
    template: '<input type="{{formType}}">',
    link: function(scope, element, attrs){
        alert(scope.formType);
    }
}
});

并在我的HTML文件中:

 <formfield formType="{{inputType}}">
 </formfield>

并在我的控制器中:

    $scope.inputType="password";

问题是我在提示框中收到了未定义的值,而不是要打印密码。

1 个答案:

答案 0 :(得分:2)

在HTML form-type中使用formType。在HTML中将值传递给它们时,如果在指令JS代码中使用camel case定义的范围变量,则用短划线分隔单词。

<formfield form-type="{{inputType}}">
 </formfield>

此外,隔离范围声明为scope而非$scope,因此以下

$scope: {
    formType: "@"
}

应改为:

scope: {
    formType: "@"
}

Working plunk