如何使用不同内容的相同警报(?)

时间:2015-04-13 20:39:45

标签: javascript angularjs underscore.js lodash

快速提问

我使用角度带来显示一些警报,每个警报都在一个不同的变量中,但我想避免这样做,有人告诉我使用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的方式。

3 个答案:

答案 0 :(得分:1)

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

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

         return loaderAlert;
    }

Еdit:

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

答案 1 :(得分:1)

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

loaderAlert = _.extend({content: 'loading something else'}, loaderAlert);

答案 2 :(得分:1)

_.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' }));