Javascript 如何根据指令中的属性设置添加其他函数?

Javascript 如何根据指令中的属性设置添加其他函数?,javascript,angularjs,angularjs-directive,controller,Javascript,Angularjs,Angularjs Directive,Controller,我正在为我的Angular应用程序创建一个具有基本功能的自定义指令。除了该指令之外,我还想添加一个与附加设置选项类似的属性,以便在提到属性时可以添加扩展功能 我想这样做: <div use-date-picker this-ngmodel="formData.dt" today></div> 如果提到属性,是否可以向指令模板添加额外的函数?我在上面的代码中犯了什么错误?不确定在发布问题时是否是您的输入错误,但在链接器功能中,您正在传入scope,然后锁定$scope

我正在为我的Angular应用程序创建一个具有基本功能的自定义指令。除了该指令之外,我还想添加一个与附加设置选项类似的属性,以便在提到属性时可以添加扩展功能

我想这样做:

 <div use-date-picker this-ngmodel="formData.dt" today></div>

如果提到属性,是否可以向指令模板添加额外的函数?我在上面的代码中犯了什么错误?

不确定在发布问题时是否是您的输入错误,但在链接器功能中,您正在传入
scope
,然后锁定
$scope

link: function(scope, element, attr) {
    console.log(scope.thisNgmodel);
    console.debug(scope);

    // Here I am trying to add the default Today's date if today attribute is added
    if (element.attr('today')) {
      // $scope.today(); -- $scope doesn't live here. 
      scope.today();
    }
},
编辑:

试试这个:

attr.$observe('today', scope.today);

如果已在标记中分配了
today
,则应运行
scope.today
函数。让我知道这是否能解决问题

发布问题时,不确定这是否是您的输入错误,但在链接器功能中,您正在传入
scope
,然后锁定
$scope

link: function(scope, element, attr) {
    console.log(scope.thisNgmodel);
    console.debug(scope);

    // Here I am trying to add the default Today's date if today attribute is added
    if (element.attr('today')) {
      // $scope.today(); -- $scope doesn't live here. 
      scope.today();
    }
},
编辑:

试试这个:

attr.$observe('today', scope.today);

如果已在标记中分配了
today
,则应运行
scope.today
函数。让我知道这是否能解决问题

发布问题时,不确定这是否是您的输入错误,但在链接器功能中,您正在传入
scope
,然后锁定
$scope

link: function(scope, element, attr) {
    console.log(scope.thisNgmodel);
    console.debug(scope);

    // Here I am trying to add the default Today's date if today attribute is added
    if (element.attr('today')) {
      // $scope.today(); -- $scope doesn't live here. 
      scope.today();
    }
},
编辑:

试试这个:

attr.$observe('today', scope.today);

如果已在标记中分配了
today
,则应运行
scope.today
函数。让我知道这是否能解决问题

发布问题时,不确定这是否是您的输入错误,但在链接器功能中,您正在传入
scope
,然后锁定
$scope

link: function(scope, element, attr) {
    console.log(scope.thisNgmodel);
    console.debug(scope);

    // Here I am trying to add the default Today's date if today attribute is added
    if (element.attr('today')) {
      // $scope.today(); -- $scope doesn't live here. 
      scope.today();
    }
},
编辑:

试试这个:

attr.$observe('today', scope.today);

如果已在标记中分配了
today
,则应运行
scope.today
函数。让我知道这是否能解决问题

指令的控制器属性与模块控制器属性不同。它的主要目的是与其他指令的api通信。。。引用angularjs文件

最佳实践:当您想向其他用户公开API时,请使用controller 指令。否则请使用链接

您只需在链接功能中将模型值设置为新日期

if (element.attr('today')) {
   scope.thisNgmodel = new Date();
}

指令的控制器属性与模块控制器属性不同。它的主要目的是与其他指令的api通信。。。引用angularjs文件

最佳实践:当您想向其他用户公开API时,请使用controller 指令。否则请使用链接

您只需在链接功能中将模型值设置为新日期

if (element.attr('today')) {
   scope.thisNgmodel = new Date();
}

指令的控制器属性与模块控制器属性不同。它的主要目的是与其他指令的api通信。。。引用angularjs文件

最佳实践:当您想向其他用户公开API时,请使用controller 指令。否则请使用链接

您只需在链接功能中将模型值设置为新日期

if (element.attr('today')) {
   scope.thisNgmodel = new Date();
}

指令的控制器属性与模块控制器属性不同。它的主要目的是与其他指令的api通信。。。引用angularjs文件

最佳实践:当您想向其他用户公开API时,请使用controller 指令。否则请使用链接

您只需在链接功能中将模型值设置为新日期

if (element.attr('today')) {
   scope.thisNgmodel = new Date();
}


它在改善的同时起作用吗?是的。。除此之外,它正在发挥作用。如果我添加
$scope.today()在控制器内部,它可以工作。但默认情况下,控制器中的所有字段都适用。我只想在调用自定义指令时添加附加属性时显示今天的日期。这就是为什么我将其从控制器中删除,并尝试为特定属性调用此函数。它是否与改进一起工作?是的。。除此之外,它正在发挥作用。如果我添加
$scope.today()在控制器内部,它可以工作。但默认情况下,控制器中的所有字段都适用。我只想在调用自定义指令时添加附加属性时显示今天的日期。这就是为什么我将其从控制器中删除,并尝试为特定属性调用此函数。它是否与改进一起工作?是的。。除此之外,它正在发挥作用。如果我添加
$scope.today()在控制器内部,它可以工作。但默认情况下,控制器中的所有字段都适用。我只想在调用自定义指令时添加附加属性时显示今天的日期。这就是为什么我将其从控制器中删除,并尝试为特定属性调用此函数。它是否与改进一起工作?是的。。除此之外,它正在发挥作用。如果我添加
$scope.today()在控制器内部,它可以工作。但默认情况下,控制器中的所有字段都适用。我只想在调用自定义指令时添加附加属性时显示今天的日期。这就是为什么我将其从控制器中删除,并尝试为特定属性调用此函数。实际上,我不确定它应该是
scope
还是
$scope
。但我也尝试了
scope.today()这也不起作用。请检查我上面编辑的答案。我想这可能与查看
attr
,而不是
元素.attr
路线有关。谢谢您编辑的答案@Kasper Lewau。当add
attr.$observe('today',scope.today)时,它显示今天的日期
而不是if(element.attr('today')
语句。然而,它显示了今天的日期,即使view指令中没有提到
today
。实际上,我不确定它是否应该是
sc