2013-05-01 3 views
2

속성에서 그의 바인딩 옵션을받을 동적 지시문을 만들려고합니다. 이 내 컨트롤러이다 :Angularjs 양방향 바인딩 문제

<div ng-controller="OtCtrl"> 
    <div ng-include src="'/client/views/openTradeView.html'"></div> 
</div> 

내보기 : 이것은 내 지시어는

<div> 
    {{title}} 
    <a href="javascript:void(0)" ng-click="minus()">-</a> 
    {{amount}} 
    <a href="javascript:void(0)" ng-click="plus()">+</a> 
</div> 

입니다 : 이것은 내 지시어보기

<div> 
    {{name}} 
    <div swings binding="Risk" title="Risk"></div> 
    <div swings binding="Amount" title="Amount"></div> 
</div> 

입니다

app.directive("swings", function() { 
return { 
    replace: true, 
    scope: { 
     title : '@title', 
     amount: '=binding', 
     extra: '=bindingExtra' 
    }, 
    resctrict: "A", 
    controller: function($scope){ 

     $scope.minus = function (event, binding) { 
      $scope.amount -= 1; 
      console.log(binding) 
     } 
     $scope.plus = function (event) { 
      $scope.amount += 1; 
     } 
    }, 
    templateUrl: '/client/views/swingsDirectiveView.html' 
} 
}); 

그리고 드디어 내 컨트롤러 :

app.controller("OtCtrl", ['$scope', function ($scope) { 
    $scope.Amount = 400; 
    $scope.Risk = 100; 

    setInterval(function(){ 
     console.log($scope.Risk) 
    },2000); 
}]); 

나는 ng-view를 사용할 때 angularjs가 새로운 범위를 생성한다는 것을 알고 있습니다. 내 문제는 내가 플러스 또는 마이너스를 클릭하면 지시문 업데이트의 양은 컨트롤러의 위험 모델이 아니지만 첫 번째로드 지시문에서 위험 초기화 값을 취해 금액을 설정한다는 것입니다.

이 문제를 어떻게 해결할 수 있습니까?

감사

+0

나는 귀하의 질문을 이해하고 있는지 잘 모르겠습니다. 코드로 Plunker를 만들었으니 괜찮은 것 같지만 어쩌면 다시 질문 할 수 있습니다. 내가 잃어버린 뭔가가있을거야. 여기 Plunk가 있습니다 : http://plnkr.co/edit/9OXRGJ?p=preview –

답변

1

내가 지금 같은 컨트롤러에 model 특성 생성 제안 :를 통해 지시에 결박, 그리고

app.controller("OtCtrl", ['$scope', function($scope) { 
    $scope.model = { 
    Amount: 400, 
    Risk: 100 
    } 
}]); 

을 :

<div swings binding="model.Risk" title="model.Risk"></div> 

가능성이 무슨 일이 해당 범위 상속은 AmountRisk의 사본을 생성합니다 (프리미티브이기 때문에); 이와 같이 객체를 만들면 참조이 복사됩니다. 즉, 범위 계층이 동일한 데이터를 공유한다는 의미입니다.

+0

고마워요! 효과가있다. – Arnold

관련 문제