code

서비스/팩토리에서 컨트롤러로의 바인딩 변수

starcafe 2023. 2. 12. 18:04
반응형

서비스/팩토리에서 컨트롤러로의 바인딩 변수

1개 이상의 컨트롤러에 의해 사용되는 변수가 서비스에 의해 변경되었습니다.이 경우 이 변수를 메모리에 저장하고 컨트롤러 간에 공유하는 서비스를 구축했습니다.

문제는 변수가 변경될 때마다 컨트롤러의 변수가 실시간으로 업데이트되지 않는다는 것입니다.

내가 이 바이올린을 만든 건 도와드리기 위해서야http://jsfiddle.net/ncyVK/

--- 주의:{{countService}}또는{{countFactory}}카운트 값을 증가시켜도 업데이트되지 않습니다.

컨트롤러에서 서비스/공장 변수를 $scope.variable에 바인드하려면 어떻게 해야 합니까?내가 뭘 잘못하고 있지?

변수를 바인딩할 수 없습니다.단, 이 변수를 포함하는 변수접근자 또는 오브젝트를 바인드할 수 있습니다.여기 고정된 jsfiddle이 있습니다.

기본적으로 현재 값을 반환하거나 보유할 수 있는 무언가를 스코프에 전달해야 합니다.예.

공장 출하 시:

app.factory('testFactory', function(){
    var countF = 1;
    return {
        getCount : function () {

            return countF; //we need some way to access actual variable value
        },
        incrementCount:function(){
           countF++;
            return countF;
        }
    }               
});

컨트롤러:

function FactoryCtrl($scope, testService, testFactory)
{
    $scope.countFactory = testFactory.getCount; //passing getter to the view
    $scope.clickF = function () {
        $scope.countF = testFactory.incrementCount();
    };
}

표시:

<div ng-controller="FactoryCtrl">

    <!--  this is now updated, note how count factory is called -->
    <p> This is my countFactory variable : {{countFactory()}}</p>

    <p> This is my updated after click variable : {{countF}}</p>

    <button ng-click="clickF()" >Factory ++ </button>
</div>

서비스의 데이터를 묶는 것은 좋지 않지만, 더 이상 필요하시면 다음 두 가지 방법을 제안합니다.

1) 해당 데이터를 서비스 내부에 보관하지 마십시오.데이터를 컨트롤러에 삽입하면 바인딩에 문제가 없습니다.

2) AngularJs 이벤트 기능을 사용할 수 있습니다.이 이벤트를 통해 에 데이터를 전송할 수도 있습니다.

예를 들어 더 필요한 사항이 있으시면 이 기사를 참고하시기 바랍니다.

http://www.w3docs.com/snippets/angularjs/bind-value-between-service-and-controller-directive.html

언급URL : https://stackoverflow.com/questions/16023451/binding-variables-from-service-factory-to-controllers

반응형