-1

angularJSの初心者として、データ自体ではなく、サービスから返された関数にバインドしてビューを更新する必要があるという事実に困惑しています。これを説明する公式ドキュメントが見つかりませんでした。

JSFiddle コード サンプル

<div ng-controller="MyCtrl">
binding to a function works!
    <p ng-bind-html-unsafe="tempLog.returnBuffer()"></p>
    <br><br>
       bind to the service variable: Doesn't work, why?
      <p>log={{tempLog.buffer}}</p>
        <br><br>
    bind to scope var instead of service var, still doesn't work
    <p>log={{logBuffer}}</p>
   bind to a scope var which points to the service Function, works!
            <p>log={{pLogFunc()}}</p>
    <button ng-click="addText('more')">Trace</button><br>
</div>

JS コード

var myApp = angular.module('myApp',[]);

myApp.factory('myLog', function() {
    var internalBuffer = "";
    return {
        buffer:internalBuffer,
        trace:function(input){
                internalBuffer = internalBuffer + "<br>" +input;
                buff = input;
            },
        returnBuffer:function(){
            return internalBuffer;
        }
    }
});


function MyCtrl($scope, myLog){
    $scope.tempLog = myLog;
    $scope.logBuffer = myLog.buffer;
    $scope.pLogFunc = myLog.returnBuffer;
    myLog.trace("aaa");

    $scope.addText = function(str){
        myLog.trace(str)
    }

}
4

1 に答える 1