我有这个工厂
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()
答案 0 :(得分:0)
当您重新分配f=imread('/tmp/bump.jpg'); %color image
%Hue - Saturation - Value
f_rgb2hsv=rgb2hsv(f); %convert image to HSV double
f_hsv2rgb=hsv2rgb(f_rgb2hsv);%convert to RGB double
f_to_image=uint8(f_hsv2rgb); %convert to uint8 to see image
imshow(f_to_image);
时,您将中断对象引用,并且结果// List of colours we'll use.
var colors = ['red', 'blue', 'purple', 'orange', 'green'];
// Define the div and it's contents
var div = document.getElementById('colors')
var string = div.innerHTML;
// A function to return a span object with coloured text.
color_span = function(color, inner) {
return '<span style="color:' + color + '">' + inner + '</span>'
}
var color_count = 0;
var return_html = '';
// Cycle through each character in the string
for (i=0; i < string.length; i++) {
// If it's an open bracket, add a coloured span to the return_html and increment the colour counter
if ( string[i] == '(' ) {
return_html += color_span(colors[color_count], string[i]);
color_count++;
// If close bracket add coloured span and decrement the colour counter.
} else if ( string[i] == ')' ) {
color_count--;
return_html += color_span(colors[color_count], string[i]);
// If neither just add the character.
} else {
return_html += string[i];
}
}
// Change the div's html.
div.innerHTML = return_html
不再指向Angular设置绑定对象。
另一方面,当您推动对象引用保持不变时,Angular的更改跟踪引擎可以检测更改并重新呈现视图。
还有一件事。我建议您使用ngClass指令代替datos.propiedadesFiltradas = data;
:
datos.propiedadesFiltradas
和HTML
$('#wrapper').toggleClass('toggled');
答案 1 :(得分:0)
由于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"