2016-07-10 3 views
0

저는 각도를 사용하고 있으며 동적으로 만들어진 객체를 편집 할 수 없습니다. 올바르게 표시 되었더라도 (바인딩이 작동 함을 의미합니다).동적으로 생성 된 객체의 각도 바인딩

<html> 
    <head> 
    </head> 
    <body ng-app='TestApp'> 
    <div ng-controller='TestCtrl'> 
     <input ng-model="newModel().name"/> 
    </div> 
    </body> 
</html> 

그리고 다음 컨트롤러 구현 :

var TestApp = angular.module("TestApp", []); 

    function TestCtrl($scope) { 
     $scope.newModel = function(){ 
     return { name: 'Fresh' }  
     } 
    } 

좀 로직을 실행해야하기 때문에 내가 바인딩에 대한 올바른 개체를 반환하는 방법을 사용하고

나는 다음과 같은 전망을 어떤 객체를 묶어야할지 결정합니다. 입력 필드에 올바른 동적으로 생성 된 값이 표시됩니다. 그러나 나는 그것을 편집하는 것 같다.

내가 뭘 잘못하고 있니? 이러한 기능을 구현하는 데 잘못된 방법입니까?

감사합니다.

+0

왜 함수로 필요합니까? 직접 범위 변수로 선언 할 수 없습니까? – Chinni

+1

각도가 표현식을 평가할 때마다 새 객체가 작성되므로 편집 할 수 없습니다. 그것은 많은 의미가 있습니다. 개체를 한 번 만들고 범위에 개체를 저장합니다. –

+0

@ Chinni - 어느 바인딩이 올바른 객체인지를 동적으로 결정해야합니다. 일부 데이터 구조에서 기존 객체를 찾거나 새 객체를 초기화해야합니다. – Dani

답변

1

개체를 반환하고 범위에 함수를 연결하는 대신 함수에서 scope 변수를 업데이트 할 수 있습니다.

컨트롤러 코드 :

var TestApp = angular.module("TestApp", []); 

function TestCtrl($scope) { 
    $scope.newModel = {}; // initialize the scope variable 
    function updateScope() { 
     // do some logic 
     $scope.newModel = { name: 'Fresh' }; // update it with the required object 
    } 

    updateScope(); // run the function 
} 

HTML 코드 :이 문제를 해결

<body ng-app='TestApp'> 
    <div ng-controller='TestCtrl'> 
     <!-- remove `()` since `newModel` is no longer a function --> 
     <input ng-model="newModel.name"/> 
    </div> 
</body> 

희망.

관련 문제