Javascript 如何访问属性';指令中的s值?

Javascript 如何访问属性';指令中的s值?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我试图将模型绑定到指令中的属性 Javascript-- HTML-- 您可以找到JSFIDLE。在小提琴中,我取消了someFunction基于我认为您正在尝试的操作,您需要进行两个修改: 您已经将replace设置为true,因此您可能应该向代码中添加一个模板,用新标记替换元素 在链接阶段发生时,插值尚未计算,因此需要观察属性以查找更改 angular.module('myApp', []) .directive('load', function($compile) {

我试图将模型绑定到指令中的属性

Javascript--

HTML--



您可以找到JSFIDLE。在小提琴中,我取消了
someFunction

基于我认为您正在尝试的操作,您需要进行两个修改:

  • 您已经将replace设置为true,因此您可能应该向代码中添加一个模板,用新标记替换元素

  • 在链接阶段发生时,插值尚未计算,因此需要观察属性以查找更改

      angular.module('myApp', [])
          .directive('load', function($compile) {
              return {
                  restrict: 'E',
                  replace: true,
                  link: function (scope, element, attrs) {
                      console.log(attrs);
                      element.html(attrs.text);
    
                      attrs.$observe('text', function(value) {
                          console.log('new value = ' + value);
                          element.html(value);
                      });
                  }
    
              };
          });
    

  • 请查看该部分以了解更多详细信息。

    根据我认为您正在尝试的操作,您需要进行两项修改:

  • 您已经将replace设置为true,因此您可能应该向代码中添加一个模板,用新标记替换元素

  • 在链接阶段发生时,插值尚未计算,因此需要观察属性以查找更改

      angular.module('myApp', [])
          .directive('load', function($compile) {
              return {
                  restrict: 'E',
                  replace: true,
                  link: function (scope, element, attrs) {
                      console.log(attrs);
                      element.html(attrs.text);
    
                      attrs.$observe('text', function(value) {
                          console.log('new value = ' + value);
                          element.html(value);
                      });
                  }
    
              };
          });
    

  • 有关更多详细信息,请参阅本节。

    这里是一个快速链接,显示了从指令中进入范围的5种不同方法。最后一个是您想要的:

    这里是一个快速的plunk,显示了从指令中进入范围的5种不同方法。最后一个是您想要的:

    您的问题是什么?您到底想完成什么?如果您希望在指令范围内,它已经作为“scope.text”存在于链接函数中。演示将不起作用,因为您没有包括angular Library您的问题是什么,您到底想实现什么?如果您希望在指令中包含范围,它已经作为“scope.text”存在于link函数中。演示将不起作用,因为您还没有包括angular Library。如果我想对
    元素.text()
    值执行相同的解析,我该怎么做?我不明白您所说的“解析”是什么意思。你想要元素中文本的值吗?
    就足够了——不需要
    “{text}}”
    的属性值。仅供参考,你的最后一个示例也可以使用
    范围。$watch
    而不是
    属性。$observe
    (+1 BTW)。如果我想对
    元素.text()
    值进行同样的解析,我该怎么做?我不明白你说的“决心”是什么意思。您想要元素中文本的值吗?
    足够了--不需要
    “{{text}}”的属性值
    。仅供参考,您的最后一个示例也可以使用
    范围。$watch
    而不是
    属性。$observe
    (+1 BTW)。
      angular.module('myApp', [])
          .directive('load', function($compile) {
              return {
                  restrict: 'E',
                  replace: true,
                  link: function (scope, element, attrs) {
                      console.log(attrs);
                      element.html(attrs.text);
    
                      attrs.$observe('text', function(value) {
                          console.log('new value = ' + value);
                          element.html(value);
                      });
                  }
    
              };
          });