2014-07-19 1 views
2

편집 가능한 표 셀을 만들려고하지만 편집 가능한지 여부를 결정하는 몇 가지 조건이 있으므로 템플릿에 입력을 포함 할 수 없습니다. 내 목표는 셀에있는 모델과 동일한 모델을 사용하여 셀을 만듭니다.하지만 작동하지 않는 것입니다.ngModel을 사용하여 지시문에서 요소를 컴파일하는 방법은 무엇입니까?

HTML :

<td editable-grid-cell ng-model="batch.amount" name="amount"></td> 

지침 번호 : 이렇게

.directive('editableGridCell', function($compile) { 
    return { 
     link: function(scope, ele, attrs) { 
      scope.field = attrs.ngModel; 
      ele.append($compile('<input type="text" class="form-control" ng-model="field"/>')(scope)); 
     } 
    } 
}) 

은 'batch.amount'로 채워지 입력을 초래한다. 나는이 고립 된 범위를 사용하여 작업 쪘 구만 : 나는 고립 범위는 여기에 작동하지 않습니다 생각, 그래서 내가 내 모든 테이블 옵션은 컨트롤러에서 설정 한 때문에

scope: { 
    model: '=ngModel' 
} 
... 
ele.append($compile('<input type="text" class="form-control" ng-model="model"/>')(scope)); 

을, 나는 부모 범위에 액세스 할 수 있어야합니다 .

도움 주셔서 감사합니다.

+0

를 사용하여 HTML을 생성 할 수 있습니다 범위를 통해 당신에게 편집 가능한 그리드 셀 지시자를 모든 테이블 옵션을 전달할 수 있습니다 ngModel을 요구하고 컨트롤러의 $ modelValue 속성에 액세스하여 모델 값에 액세스 할 수 있습니다 ... http://stackoverflow.com/questions/20930592/whats-the-meaning-of-require-ngmodel –

답변

2

당신은 당신이 다음 범위를 분리 사용하려는 해달라고하면

scope: { 
    model: '=ngModel', 
    tableOptions: '=' 
} 

은 또는, 당신은 바인드합니다

.directive('editableGridCell', function($compile) { 
    return { 
     link: function(scope, ele, attrs) { 
      var html = '<input type="text" class="form-control" ng-model="'; 
      html += attrs.ngModel; 
      html += '"/>'; 
      ele.append($compile(html)(scope)); 
     } 
    } 
}) 
+0

나는 결국이 두 가지 해결책에 모두 도달했습니다. 격리 된 범위를 사용하여 끝내고 내 셀 태그에 tableOptions attr을 추가했습니다. 나는 또한 제안 된 두 번째 솔루션과 비슷한 것을 시도했다. 문제가 컴파일 메서드에 변수를 전달하려고하는 것처럼 보입니다. 당신이했던 것처럼하고 컴파일 직전에 태그를 가져야 만했습니다. 감사합니다. – kvedananda

+0

AngularJs 1.6.3에 대한 해결책이 있습니까? 두 번째 접근법을 따르면 Html은''과 같은 형태로 끝나고 'Expression' '은 할당 할 수 없다는 오류를 발생시킵니다 .' – scipper