【问题标题】:How to use the same alert with different content (?)如何使用具有不同内容的相同警报(?)
【发布时间】:2015-04-13 20:39:45
【问题描述】:

快速提问

我正在使用角带来显示一些警报,每个警报都在不同的变量中,但我想避免这样做,有人告诉我使用 lodash 的_.extend,但是我应该如何使用它特殊情况?

var loaderAlert1 = $alert({
    animation: 'fx-bounce-right',
    content: 'Loading content, please wait...',
    container: '.alerts-container',
    type: 'info',
    show: true
  }),
  loaderAlert2 = $alert({
    animation: 'fx-bounce-right',
    content: 'Adding Line to BetSlip',
    container: '.alerts-container',
    type: 'info',
    show: false
  }),
  loaderAlert3 = $alert({
    animation: 'fx-bounce-right',
    content: 'Loading your messages, please wait...',
    container: '.alerts-container',
    type: 'info',
    show: false
  });

如您所见,几乎相同,但在某些情况下,show attr 设置为 true 或 false,content: 也会更改。

我调用此警报的方式:loaderAlert1.show()loaderAlert1.hide() 等等...

所以我想做类似的事情

var loaderAlert = $alert({
    animation: 'fx-bounce-right',
    content: 'Loading content, please wait...',
    container: '.alerts-container',
    type: 'info',
    show: true
  });

loaderAlert = {content: 'loading something else'};

loaderAlert = {content: 'loading something GREAT'};

loaderAlert = {content: 'loading only ROCK N ROLL'};

我在这里只声明一个变量,然后一旦我调用该变量,我可以更改content:...但我不知道如何_.extendhere is the function I mentioned

【问题讨论】:

    标签: javascript angularjs underscore.js lodash


    【解决方案1】:

    我认为这应该可以解决问题:

       function customAlert( content ) {
             var loaderAlert = $alert({
                animation: 'fx-bounce-right',
                content: content,
                container: '.alerts-container',
                 type: 'info',
                show: true
              });
    
             return loaderAlert;
        }
    

    编辑:

    var content = 'loading something else', // choose one of the three choices here
         loaderAlert = customAlert(content);
    

    【讨论】:

    • 一旦我决定调用它应该如何使用它?
    • 知道如何隐藏它吗?
    • @NietzscheProgrammer 你的意思是,也要更改 show 属性?
    • 我的意思是,在我做 loaderAlert.hide() 之前,警报消失了。类似的东西
    • @NietzscheProgrammer 我不明白为什么你现在也不能这样做。
    【解决方案2】:
    var loaderAlert = $alert({
        animation: 'fx-bounce-right',
        container: '.alerts-container',
        type: 'info',
        show: true
      });
    
    loaderAlert = _.extend({content: 'loading something else'}, loaderAlert);
    

    【讨论】:

    • 隐藏?将 show 属性更改为 false 并使用类似 ng-show="loaderAlert.show" 的内容
    • 在我做loaderAlert.hide()之前,这就是我的意思。
    • 无论如何您的解决方案都不起作用,它没有显示带有内容的警报,它只是一个没有字母的白色警报
    【解决方案3】:

    _.extend 会帮助你,但是在调用$alert 时重新使用一个对象可能是个坏主意——你可能会发现你需要稍后再引用给定的content 值。

    如果您提供一个新对象作为_.extend 的第一个参数,您可以克隆每个警报的基本参数:

    var base = {
        animation: 'fx-bounce-right',
        content: 'Loading content, please wait...',
        container: '.alerts-container',
        type: 'info',
        show: true
      }
    
    $alert(_.extend({}, base, { content: 'first alert' }));
    $alert(_.extend({}, base, { content: 'second alert' }));
    $alert(_.extend({}, base, { content: 'third alert' }));
    

    【讨论】:

    • 很好,如何隐藏它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2021-04-13
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多