0

我在这里做错了什么?在 Angular JS 中,我试图将 ng-model 名称添加到自定义指令中,以便它与父范围绑定。我希望它看起来像这样:

   <div use-date-picker this-ngmodel="something"></div>
    The ng model: {{ something }}

我在指令中尝试了这个,但是我想通过属性传递的 ng-model 名称没有将它添加到模板中:

app.directive('useDatePicker', function() { 

    return {
        restrict: 'A',
        replace:true,
        scope: {
            thisNgmodel: '=',
            //bindAttr: '='
        },      
        template: '<div class="input-group">' +
                    '<input type="text" class="form-control" datepicker-popup="{{format}}" name="dt" ng-model=thisNgmodel is-open="datepickers.dt" datepicker-options="dateOptions" ng-required="true" close-text="Close" />' +
                    '<span class="input-group-btn">' +
                        '<button class="btn btn-default" ng-click="open($event,\'dt\')"><i class="glyphicon glyphicon-calendar"></i></button>' +
                    '</span>' +
                   '</div>   ',        


    };
});

我究竟做错了什么?

4

1 回答 1

2

ng-model您在模板中缺少双引号:

ng-model=thisNgmodel应该ng-model="thisNgmodel"

示例 ng-init

<div use-date-picker ng-init="something = 1" this-ngmodel="something"></div>

将字符串传递给指令的示例: 要将字符串变量传递给指令,请使用@符号。

<div use-date-picker string-var="test"></div>

scope: {
    stringVar: '@'
},
template: '<input type="text" value="{{stringVar}}" />'

现在您将能够将字符串值传递给您的指令,并且value您输入的属性将默认使用该文本。将属性绑定到您的文本框更有意义,ng-model但您可以稍后检索它的值。ng-model通过如上例所示初始化您的值,您将获得相同的效果。

于 2014-03-18T19:52:49.450 回答