내 응용 프로그램에 여러 개의 "입력란과 버튼"커플이 있습니다. 이 버튼은 텍스트 필드에 내용을 쓰는 대화 상자를 엽니 다.중첩 범위 속성에 각도 쓰기
[ input ] [ button ] ---> [ dialog (ok) (cancel) ]
나는 Bootstrap.UI.Modal (https://angular-ui.github.io/bootstrap/#/modal)를 사용했습니다 그래서 그것을 처리하는 약속이 있습니다
//html
<input ng-model="foo"/>
<button ng-click="dialog('foo')"> Open </button>
//controller
modalInstance.result.then(
function (selectedItem) {
$scope[ arg ] = selectedItem;
},
...
);
다 괜찮 작동합니다. (Demo) 문제는 내가 내 범위 객체의 중첩 된 속성에 액세스해야 할 때 온다 :
...
<input ng-model="foo"/>
<button ng-click="dialog('foo')"> Open </button>
...
<li ng-repeat="thing in model.nested.properties.of.unknown.level">
...
<input ng-model="thing.foo"/>
<button ng-click="dialog('???')"> Open </button>
...
내가 알고 싶은 것은 : 그것을 달성하기위한 가장 좋은 방법은 무엇인가?
가 돌아 콜백으로 범위 변수를 전달하지만, 그것은 단지 값이 아닌 참조를 가지고;
는 지금까지 내가 시도 그래서 필드는 업데이트되지 않습니다. 입력 필드의 ID를 사용
object = { "one": function(){ $scope.a.b.c = ... }, "two": function(){ $scope.d.e.f = ... }, ... // but this requires that I know in advance // how many level I will nest into the $scope }
같은 콜백 목적을 제조 범위 계층
dialog(["a","b","c"]) --> $scope[ "a" ][ "b" ][ "c" ] = output.value;
에게 다시 문자열의 배열을 전달
resolve: { field: function() { return $scope[ field ]; } }
하면 너무 DOM에 직접 쓸 수있다. (그러나 이것은 anglejs에서 좋은 접근법이 아니다.)
$("#input-abc...").val(...)
사용 (uungh ...)
내가 첫 번째 해결책으로 최고의 하나가 될 것이라고 생각하지만, 어떻게 내 약속 콜백에 중첩 된 범위 요소의 참조를 전달할 수 평가 ? 이것을 달성하기위한 몇 가지 모범 사례가 있습니까? 제안 사항이 있으십니까?
더 나은 방법으로 첫 번째 해결 방법을 자세히 설명해 주시겠습니까? "edit() 매개 변수에서 오는 것"이란 무엇을 의미합니까? 일하는 바이올린도 굉장 할 것입니다! – Motocarota