从Angular服务更新ng-model

时间:2013-07-08 15:12:25

标签: javascript angularjs

我有角度应用程序和textarea

<textarea id="log_text_area" readonly>{{logger}}</textarea>

我还有Logger服务,必须更新此textarea

angular.module('app').factory('Logger', [function(){
    var logger = {};

    //
    // Write log
    //
    logger.log = function(log_area, arguments){
        // get current date
        var date = new Date();
        // log message
        var message = '';

        // traverse object and collect log message
        for (var i = 0; i < arguments.length; i++) {
            message += arguments[i] + " ";
        }

        console.log(log_area);

        // check log area
        if (log_area != undefined){
            // log value
            var value = "[" + date + "}] " + message + "\n";
            value += log_area;
            log_area = value;
        }
    };

    // return logger
    return logger;
}]);

现在我想从控制器更新我的textarea:

function MyController($scope, Logger) {     
    $scope.logger = '';

    Logger.log($scope.logger, 'Logs Logs Logs');
}

但它没有更新。如何从angular服务更新textarea?

谢谢。

1 个答案:

答案 0 :(得分:1)

让您的日志函数仅返回文本,并将返回的值分配给控制器中的$ scope属性。

$scope.logger = Logger.Log('log, log log');

或者你可以在log()调用之后调用$scope.$apply();,但是接近numero uno更干净。