У меня есть директива iscolated scope, которая разделяет область с '='. Нам нужно передать объект в директиву. Когда объект передается в директиву с его свойствами, директива работает нормально, и объект, после изменения в директиве, корректно возвращается вызывающему представлению.Угловая директива 1.5.7 двусторонняя привязка нулевого объекта
Однако, когда вызывающий вид передает тот же объект, который объявлен как null, даже после изменения объекта в директиве объект возвращается как null.
Соответствующие части директивы приведены ниже:
.directive("lookupCentrosDeGestion", function() {
var _controller = ['centrosDeGestionServices', 'toastr', function (centrosDeGestionServices, toastr) {
var dvm = this;
...
dvm.rowSelected = function (item) {
if (!dvm.centroDeGestion)
dvm.centroDeGestion = {};
dvm.centroDeGestion.crecodigo = angular.copy(item.crecodigo);
dvm.centroDeGestion.crenombre = angular.copy(item.crenombre);
dvm.centroDeGestion.divcodigo = angular.copy(item.divcodigo);
dvm.centroDeGestion.empRazonSocial = angular.copy(item.empRazonSocial);
dvm.centroDeGestion.empid = angular.copy(item.empid);
dvm.centroDeGestion.prynombre = angular.copy(item.prynombre);
dvm.centroDeGestion.prynumero = angular.copy(item.prynumero);
dvm.centroDeGestion.unicodigo = angular.copy(item.unicodigo);
dvm.showMainParent();
}
dvm.showMainParent = function() {
dvm.view.active = dvm.view.returnTo;
}
}];
return {
restrict: 'E',
scope: {
view: '=',
centroDeGestion: '=',
centroDeProcesoId: '=',
centroDeProcesoName: '=',
},
link: _link,
controller: _controller,
controllerAs: 'dvm',
bindToController: true,
templateUrl: '/hr/admin/centrosDeGestion/lookupCentrosDeGestion.html'
};
})
Если нулевой объект передается в директиве (dvm.centroDeGestion
), я creaste новый объект, а затем присвоить его свойства, однако вид вызова по-прежнему получает нуль.
Я также хотел бы назначить объект напрямую, вместо того, чтобы назначать каждое свойство, но строка dvm.centroDeGestion = angular.copy(ítem)
всегда будет возвращать значение null.
Любые идеи о том, как решить эти проблемы?
Заранее спасибо
Не будет использовать @ вызывать директиву для обработки объекта как строки? Я все равно пытался, но не повезло. – aplon
Один из способов - связать пустой объект с свойством centroDeGestion директивы в случае, если модель является нулевой, а не инициализирует ее в пустой объект внутри директивы. – Developer