AngularJS指令修改ng绑定并添加省略号

AngularJS指令修改ng绑定并添加省略号,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我已经做了一个AngularJS指令,在overflow中添加一个省略号:隐藏文本。它在Firefox中似乎不起作用,我也不相信我已经尽可能好地构建了它。流程是: 向HTML元素添加指令属性 指令将ng bind属性读入范围 指令监视链接函数中ng bind的更改 在ng bind change上,指令进行了一些奇特的计算,以确定文本应该拆分和添加省略号的位置(我在这里并没有包含这段代码,只是假设它可以工作) 指令将元素的HTML设置为等于此新字符串,而不接触ng bind HTML <p

我已经做了一个AngularJS指令,在overflow中添加一个省略号:隐藏文本。它在Firefox中似乎不起作用,我也不相信我已经尽可能好地构建了它。流程是:

  • 向HTML元素添加指令属性
  • 指令将ng bind属性读入范围
  • 指令监视链接函数中ng bind的更改
  • 在ng bind change上,指令进行了一些奇特的计算,以确定文本应该拆分和添加省略号的位置(我在这里并没有包含这段代码,只是假设它可以工作)
  • 指令将元素的HTML设置为等于此新字符串,而不接触ng bind
  • HTML

    <p data-ng-bind="articleText" data-add-ellipsis></p>
    
    <p data-ng-bind="articleText | addEllipsis"></p>
    
    有问题的一行是指令中的最后一行:

     element.html(newText)
    

    我假设应该使用一些模板风格的方法?我不清楚如何最好地找到答案。感谢您的帮助。

    如果您将
    数据ng bind=“articleText”
    替换为
    ng model=“articleText”
    ,它应该可以在Chrome和Firefox中使用。我不知道为什么,也许是虫子?但这是一个快速解决方案


    如果你对差异感兴趣,你可以看看这个。但是在不同的浏览器中行为的不同确实有点奇怪

    如果用
    ng model=“articleText”
    替换
    data ng bind=“articleText”
    ,它应该可以在Chrome和Firefox中使用。我不知道为什么,也许是虫子?但这是一个快速解决方案

    如果你对差异感兴趣,你可以看看这个。但是在不同的浏览器中行为的不同确实有点奇怪

    您可以使用一个。大概是这样的:

    过滤器

    app.filter('addEllipsis', function () {
        return function (input, scope) {
            if (input) {
                // Replace this with the real implementation
                return input.substring(0, 5) + '...';  
            }
        }
    });
    
    HTML

    <p data-ng-bind="articleText" data-add-ellipsis></p>
    
    <p data-ng-bind="articleText | addEllipsis"></p>
    

    您可以使用。大概是这样的:

    过滤器

    app.filter('addEllipsis', function () {
        return function (input, scope) {
            if (input) {
                // Replace this with the real implementation
                return input.substring(0, 5) + '...';  
            }
        }
    });
    
    HTML

    <p data-ng-bind="articleText" data-add-ellipsis></p>
    
    <p data-ng-bind="articleText | addEllipsis"></p>