如何传递函数值并将其设置为另一个变量?

时间:2016-07-29 16:24:20

标签: javascript angularjs

我有一个标记sendMessageFlag,如果它是真的我想将函数obj设置为fileData但它总是说 undefined

ctrl.js

var sendMessageFlag;

function sendMessageToFile (data){
    return data;
}

socket.on('ditConsumer',function (data) {
     var obj = {
         file:$scope.filename,
         data:data
     }

     if(sendMessageFlag) {
         console.log('send messageto FIe in consumer');
         sendMessageToFile(obj);
     }
});

if($scope.filename) {
     sendMessageFlag = true;
     var fileData = sendMessageToFile(data);
     console.log('CONSUMER MESSAGE', fileData);
     socket.emit('startrecording', fileData);
}

2 个答案:

答案 0 :(得分:0)

在向上声明变量时,尚未初始化sendMessageFlag的值。如果首先触发socket.on('ditConsumer'),则该值未定义。您可能希望使用false初始化它,然后在底部的if块中将其设置为true。

答案 1 :(得分:0)

如果我理解正确,下面是解决方案(这样你就不会在'console.log('CONSUMER MESSAGE',fileData)中得到未定义;':

if(sendMessageFlag) {
     console.log('send messageto FIe in consumer');
     return sendMessageToFile(obj);
}

你也应该从if条件返回。