2014-04-21 3 views
0

지시어 내에서 속성에 텍스트 입력을 바인딩하려고합니다.이 유형의 새 지시문을 추가 할 때마다 컨트롤러를 추가하지 않아도되기 때문입니다 . 이것이 가능합니까 아니면 ng-model을 사용할 때 항상 컨트롤러를 지정해야합니까? 코드 예제는 수천 단어에 해당하므로 http://codepen.io/scottwio/pen/HKqiw을 살펴보십시오. 입력 내용을 입력하면 금액이 변경됩니다.텍스트 입력을 지시문 속성에 바인딩

+0

은 분명히 그렇습니다. 문제가 어디 있니? – zeroflagL

+0

입력이 변경되면 애니메이션을 재생하고 입력 한대로 대략 금액을 다시 채우고 싶어한다고 상상해보십시오. 빠른 glace 후에 양에 대해 '@'를 사용하고 템플릿에 점이없는 모델을 사용하여 격리 범위를 만드는 것이 문제가 될 수있는 것처럼 보입니다. – Mindstormy

+0

@Mindstormy는 입력에 attr.amounts가 범위를 업데이트해야한다고 제안했기 때문에 $ watch (attrs.amount, function (v) {console.log ('changed to'+ v);}); 새 금액을 기록하고 기록합니다. 그렇게하면 시계가 해고 될 때마다 애니메이션을 업데이트 할 수 있습니다. –

답변

1

은 당신의 코드에 두 가지 문제가 있습니다

  1. scope.$watch(attrs.amount, function (v) {...}); < => 절대 변경하려고하지
    scope.$watch('100', function (v) {...});
    , 그래서 당신이하고 싶은 일을하지 않습니다.

  2. 요소 속성이 절대로 변경되지 않으므로 function draw(aniTime) { var amount = attrs.amount;은 그리 유용하지 않습니다.


당신이처럼 문제를 해결할 수 :

scope.$watch('amount', function (v) {...}); 

function draw(aniTime) { 
    var amount = scope.amount; 
    ... 

참조, 또한,이 short demo. 상위 범위로 지정된 양을 공유하려는 경우


는, 당신은 데이터 바인딩 양방향을 설정하고 결합하는 부모 범위의 속성을 지정해야합니다. 예컨대 :

// Parent scope 
$scope.someAmount = 100; 

// In HTML 
<custommarc amount="someAmount" ... 

// In directive 
scope: { 
    amount: '=' 
    ... 

+0

감사합니다. @ExpertSystem이 문제가 해결되었습니다. 어리석은 실수는 지금 그것을 생각해 봅니다. –

관련 문제