2013-06-27 35 views
5

Tôi có màn hình thông tin trong đó tôi đang sử dụng bộ lặp để xây dựng thông tin về một người dùng cụ thể.AngularJS - Chuyển dữ liệu đối tượng vào phương thức

Khi nút "Chỉnh sửa" được nhấp, làm cách nào tôi có thể chuyển dữ liệu đối tượng người dùng cụ thể vào mẫu cửa sổ phương thức?

HTML

<form class="custom" ng-controller="DepCtrl" ng-cloak class="ng-cloak"> 
<fieldset ng-repeat="object in data.dataset"> 
<legend><span>{{ object.header }}</span><span class="dep_rel">({{ object.relation }}) </span></legend> 
    <div class="row"> 
     <div class="four columns" ng-repeat="o in object.collection.inputs"> 
      <span class="table_label">{{ o.label }}:</span><span class="table_answer">{{ o.value }}</span><br> 
     </div> 
    </div> 
    <div class="row"> 
     <a ng-click="openDialog('edit')" style="color:#444;text-decoration:none;margin-right:10px;margin-top:5px;" class="btn_gray smaller left" href="#">Edit</a> 
     <a style="color:#444;text-decoration:none;margin-top:5px;" class="btn_gray smaller" href="#">Delete</a>  
    </div> 
</fieldset> 
</form> 

JS

function DepCtrl($scope, Dependents, $dialog) { 
$scope.data = Dependents; 

var t = '<div class="modal-header">'+ 
     '<h3>' + $scope.header.value + '</h3>'+ 
     '</div>'+ 
     '<div class="modal-body">'+ 
     '<p>Enter a value to pass to <code>close</code> as the result: <input ng-model="result" /></p>'+ 
     '</div>'+ 
     '<div class="modal-footer">'+ 
     '<button ng-click="close(result)" class="btn btn-primary" >Close</button>'+ 
     '</div>'; 

$scope.opts = { 
backdrop: true, 
keyboard: true, 
dialogFade: true, 
backdropClick: false, 
template: t, // OR: templateUrl: 'path/to/view.html', 
controller: 'TestDialogController' 
}; 

$scope.openDialog = function(action){ 
var d = $dialog.dialog($scope.opts); 
//if (action === 'edit') { $scope.opts.templateUrl = '../../modal.html'; } 
d.open().then(function(result){ 
    if(result) 
    { 
    alert('dialog closed with result: ' + result); 
    } 
}); 
}; 
} 

Trả lời

9

Nó giúp để biết được $ dịch vụ thoại bạn đang đề cập đến chính xác, vì $ thoại không phải là một phần của AngularJS lõi API. Giả sử bạn đang sử dụng dịch vụ thoại $ từ ui-bootstrap, bạn có thể chuyển đối tượng người dùng của mình vào bộ điều khiển hộp thoại thông qua thuộc tính resolve của đối tượng cấu hình hộp thoại $.

Khi $dialog documentation khẳng định nó:

quyết tâm: Các thành viên sẽ được giải quyết và thông qua bộ điều khiển như người dân địa phương

function DepCtrl($scope, Dependents, $dialog) { 
    $scope.data = Dependents; 

    $scope.opts = { 
    backdrop: true, 
    keyboard: true, 
    dialogFade: true, 
    backdropClick: false, 
    template: t, // OR: templateUrl: 'path/to/view.html', 
    controller: 'TestDialogController', 
    resolve: { 
     user: function(){ 
     return $scope.data; 
     } 
    } 
    }; 

    $scope.openDialog = function(action){ 
    var d = $dialog.dialog($scope.opts); 
    d.open(); 
    }; 

} 

/** 
* [TextDialogController description] 
* @param {object} $dialog instance 
* @param {mixed} user User object from the resolve object 
*/ 
function TextDialogController(dialog, user){ 
    ... 
} 
+0

gì nếu lời hứa không được giải quyết? Tôi nghĩ rằng hộp thoại sẽ không mở ra là tốt nhưng chúng tôi có thể chạy mã tùy chỉnh của chúng tôi trong trường hợp đó, tức là cách xử lý lời hứa bị từ chối không? ví dụ: cho thấy một bánh mì nướng hoặc một cái gì đó. – vivek

Các vấn đề liên quan