【问题标题】:How do I call a function to change a value in a directive?如何调用函数来更改指令中的值?
【发布时间】:2013-02-04 20:38:52
【问题描述】:

我需要这样的东西,但它不起作用

.directive('dateTime', function(){
        return {
            restrict: 'E',
            replace: true,
            scope:'=value',
            template: "<div>{{value.format('mmm dd yy')}}"</div>", 
                                    // ^here: applying a function to the scope  
         };
    });

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    您已经使用scope: '=value' 创建了一个隔离作用域,因此这是一个全新的作用域,它在原型上不会从父作用域继承。这意味着您要调用的任何函数都必须来自

    1. 您注入指令的服务、过滤器等
    2. 另一个指令的控制器,使用require 获取访问权限(有关示例,请参见Angular 主页上的tabspane 指令)
    3. 您在指令的控制器或 $scope 上的链接函数中定义的函数(本质上是相同的) 示例:https://stackoverflow.com/a/14621193/215945
    4. 使用“&”语法使指令能够调用在父作用域上声明的函数。示例:What is the best way to implement a button that needs to be disabled while submitting in AngularJS?

    【讨论】:

      【解决方案2】:

      您可能只是在寻找date filter

      {{value | date:'MMM dd yy'}}
      

      但你也可以这样做:

      app.directive('dateTime', function(){
              return {
                  restrict: 'E',
                  replace: true,
                  scope:'=value',
                  template: "<div>{{value | date:'MMM dd yy')}}"</div>", 
                                          // ^here: applying a function to the scope  
               };
          });
      

      【讨论】:

      • 嗯,不一样...值可以不完全是日期时间格式,我需要应用一个函数,任何任意函数
      • 所以你需要从指令中调用作用域函数?
      • 我有一个指令,在它的模板中我使用另一个指令假设调用一些任意函数并将其应用于值
      猜你喜欢
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 2020-09-10
      相关资源
      最近更新 更多