首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用jqlite瞄准角目标

用jqlite瞄准角目标
EN

Stack Overflow用户
提问于 2015-08-24 18:09:57
回答 1查看 49关注 0票数 1

我有一个自定义指令,其中包含一个带有角对象的DOM元素,我想知道如何定位该对象的值。下面是一个例子:

代码语言:javascript
复制
app.directive('x', function() {
return {
  scope: {},
  restrict: 'E',
  template: '<span class="oinky">{{box.size}}</span>',
  link: function(scope, element, attrs) {

    if({{box.size}}>50 && {{box.size}}<=65) {

    element.css("background", "rgba(255, 216, 61, 0.7)");

  }else if({{box.size}}>65 && {{box.size}}<80){

    element.css("background", "rgba(235, 149, 51, 0.7)");

  }else if({{box.size}}>=80){

    element.css("background", "rgba(189, 45, 40, 0.7)");

  }else{

    element.css("background", "rgba(185, 211, 50, 0.7)");

  }

  }    
};

});

就像这样。对不起,如果我对框架的知识看上去很粗糙,但是我无法在google或StackOverflow上找到任何好的答案。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-24 18:22:47

您缺少的是这个指令的用户如何能够设置box.size的值。您已经使用scope:{}的声明创建了一个独立的作用域,因此目前不可能将box.size设置为任何东西。

假设您希望将其作为独立组件(即不从父作用域读取),则可以在指令作用域上设置boxsize,并让用户在使用该指令时设置它:

代码语言:javascript
复制
app.directive('x', function() {
    return {
      scope: {
        boxSize:"=size"
      },
      restrict: 'E',
      template: '<span class="oinky">{{boxSize}}</span>',
      link: function(scope, element, attrs) {
        if(scope.boxSize>50 && scope.boxSize<=65) {
            element.css("background", "rgba(255, 216, 61, 0.7)");
        } else if(scope.boxSize>65 && scope.boxSize<80){
            element.css("background", "rgba(235, 149, 51, 0.7)");
        } else if(scope.boxSize>=80){
            element.css("background", "rgba(189, 45, 40, 0.7)");
        } else{
            element.css("background", "rgba(185, 211, 50, 0.7)");
        }
      }    
    };
});

然后可用于:

代码语言:javascript
复制
<x size="55"/>

有关带有指令的作用域的更多信息,请查看$compile的文档,这是获取指令信息的最佳位置:(https://docs.angularjs.org/api/ng/service/$compile )。

更新:使用父作用域使用父作用域,只需删除scope: {}部件。这意味着scope函数的link参数将是父函数的参数。

类似于:

代码语言:javascript
复制
 app.directive('x', function() {
        return {          
          restrict: 'E',
          template: '<span class="oinky">{{box.size}}</span>',
          link: function(scope, element, attrs) {
            if(scope.box.size>50 && scope.box.size<=65) {
                element.css("background", "rgba(255, 216, 61, 0.7)");
            } else if(scope.box.size>65 && scope.box.size<80){
                element.css("background", "rgba(235, 149, 51, 0.7)");
            } else if(scope.box.size>=80){
                element.css("background", "rgba(189, 45, 40, 0.7)");
            } else{
                element.css("background", "rgba(185, 211, 50, 0.7)");
            }
          }    
        };
    });

它假定父作用域具有一个具有box属性的size对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32188905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档