工厂阵列只能被推入,不能被替换
Factory Array can be pushed but not replaced
我有这个工厂
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>
由于dfsq的答案,我认为我想要的一切都是不可能的,但我发现了这个"部分"解决方案
在工厂:
datos.setPropiedadesFiltradas = function(data){
datos.propiedadesFiltradas.length = 0;
datos.propiedadesFiltradas.push.apply(datos.propiedadesFiltradas,data);
}
我可以改变这个:
ng-repeat="propiedad in sidebarCtrl.propiedades[0]"
ng-repeat="propiedad in sidebarCtrl.propiedades"
相关文章:
- 不能将 UTF-8 字符替换为正则表达式
- 为什么不能使用 document.getElementById 来替换 JavaScript 中的 $
- string.replace(fromCharCode() , '') 不能替换字符
- 不能使用正则表达式将空格替换为零宽度空间
- 为什么我不能将函数直接传递给替换方法
- gulp-rename可以复制,但不能替换
- 替换方法不能使用全局修饰符
- 替换按钮不能工作
- 简单的JavaScript Regex替换不能在带有方括号的令牌上工作
- 我不能在javascript中替换这个模式
- 获取错误"不能调用方法'替换'undefined"
- 为什么我不能让我的JavaScript替换函数工作?
- Javascript替换由于某些原因不能工作
- 当数组字段为空时,替换值不能正常工作
- 不能在函数调用中用变量值替换硬编码的属性名值
- 我不能用正则表达式和变量替换字符
- 指令不能替换模板中的变量:语法错误
- 为什么我不能替换隐藏输入的值
- Node:不能替换Intl来使用IntlPolyfill
- 不能替换数组中的项