我有这个工厂
DatosFactory.js
(function() {
'use strict';
angular.module('InmoManager')
.factory('DatosFactory', function($http, $location) {
var datos = {
propiedadesFiltradas: []
}
...
datos.getPropiedadesFiltradas = function(){
return datos.propiedadesFiltradas;
}
datos.setPropiedadesFiltradas = function(data){
datos.propiedadesFiltradas.length = 0;
datos.propiedadesFiltradas.push(data);
}
return datos;
})
})();
这个控制器
SidebarController.js
(function() {
'use strict';
angular.module('InmoManager')
.controller('SidebarController', function($http, $scope, DatosFactory) {
var sidebarCtrl = this;
sidebarCtrl.toggleSidebar = function(){
$('#wrapper').toggleClass('toggled');
}
sidebarCtrl.propiedades = DatosFactory.getPropiedadesFiltradas();
});
})();
使这项工作
pageSidebar.html
<li class="item" ng-repeat="propiedad in sidebarCtrl.propiedades[0] | orderBy:'titulo'">
这很好!,但是,我想更改此:
ng-repeat="propiedad in sidebarCtrl.propiedades[0]"
至
ng-repeat="propiedad in sidebarCtrl.propiedades"
和这个
datos.setPropiedadesFiltradas = function(data){
datos.propiedadesFiltradas.length = 0;
datos.propiedadesFiltradas.push(data);
}
至
datos.setPropiedadesFiltradas = function(data){
datos.propiedadesFiltradas = data;
}
但是当我这样做时,变量
sidebarCtrl.propiedades
变得不确定(当我调用datos.setPropiedadesFiltradas()
时不会更新 最佳答案
重新分配datos.propiedadesFiltradas = data;
时,将中断对象引用,结果datos.propiedadesFiltradas
不再指向对象Angular设置的绑定。
另一方面,当您推送对象时,对象引用保持不变,并且Angular的更改跟踪引擎可以检测到更改并重新渲染视图。
还有一件事。我建议您使用ngClass指令而不是$('#wrapper').toggleClass('toggled');
:
sidebarCtrl.toggleSidebar = function() {
sidebarCtrl.toggle = !sidebarCtrl.toggle;
}
和HTML
<div id="wrapper" ng-class={toggled: toggle}>...</div>