我想要实现的基本上是"on ng repeat finished rendering"处理程序.我能够检测到它何时完成,但我无法弄清楚如何从中触发一个功能.
检查小提琴:http://jsfiddle.net/paulocoelho/BsMqq/3/
JS
var module = angular.module('testApp', [])
.directive('onFinishRender', function () {
return {
restrict: 'A',
link: function (scope, element, attr) {
if (scope.$last === true) {
element.ready(function () {
console.log("calling:"+attr.onFinishRender);
// CALL TEST HERE!
});
}
}
}
});
function myC($scope) {
$scope.ta = [1, 2, 3, 4, 5, 6];
function test() {
console.log("test executed");
}
}
Run Code Online (Sandbox Code Playgroud)
HTML
<div ng-app="testApp" ng-controller="myC">
<p ng-repeat="t in ta" on-finish-render="test()">{{t}}</p>
</div>
Run Code Online (Sandbox Code Playgroud)
答案:来自finishmove的工作小提琴:http …
我有一个非常简化的版本,我正在做的事情可以解决问题.
我有一个简单的directive.每当您单击一个元素时,它会添加另一个元素.但是,需要首先编译它才能正确呈现它.
我的研究引导我$compile.但是所有的例子都使用了一个复杂的结构,我真的不知道如何在这里应用.
小提琴在这里:http://jsfiddle.net/paulocoelho/fBjbP/1/
JS就在这里:
var module = angular.module('testApp', [])
.directive('test', function () {
return {
restrict: 'E',
template: '<p>{{text}}</p>',
scope: {
text: '@text'
},
link:function(scope,element){
$( element ).click(function(){
// TODO: This does not do what it's supposed to :(
$(this).parent().append("<test text='n'></test>");
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
Josh David Miller的解决方案:http: //jsfiddle.net/paulocoelho/fBjbP/2/
请参阅最后的编辑以了解实际问题.
好的,我有这个场景:
a = [false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
a.sort(function(a,b){return !a && b});
Run Code Online (Sandbox Code Playgroud)
它给了我这个:
[false, false, true, true, true, …Run Code Online (Sandbox Code Playgroud) 我试图在控制器函数中访问指令的属性.但是,当我访问它时,它是未定义的.我注意到如果我做一个简单的计时器就行了.有没有办法只在指令执行后才能执行代码,并且它的范围已准备好并设置为使用?
我弄了一个小提琴.确保您的控制台已打开.http://jsfiddle.net/paulocoelho/uKA2L/1/
这是我在小提琴中使用的代码:
<div ng-app="testApp" >
<testcomponent text="hello!"></testcomponent>
</div>
Run Code Online (Sandbox Code Playgroud)
var module = angular.module('testApp', [])
.directive('testcomponent', function () {
return {
restrict: 'E',
template: '<div><p>{{text}} This will run fine! </p></div>',
scope: {
text: '@text'
},
controller: function ($scope, $element) {
console.log($scope.text); // this will return undefined
setTimeout(function () {
console.log($scope.text); // this will return the actual value...
}, 1000);
},
link: function ($scope, $element, $attrs) {
console.log($scope.text);
setTimeout(function () {
console.log($scope.text);
}, 1000);
}
};
});
Run Code Online (Sandbox Code Playgroud) 每当我制作一个webapp并且我遇到CORS问题时,我就开始煮咖啡了.拧紧它一段时间后,我设法让它工作,但这次不是,我需要帮助.
这是客户端代码:
$http({method: 'GET', url: 'http://localhost:3000/api/symbol/junk',
headers:{
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, X-Requested-With',
'X-Random-Shit':'123123123'
}})
.success(function(d){ console.log( "yay" ); })
.error(function(d){ console.log( "nope" ); });
Run Code Online (Sandbox Code Playgroud)
服务器端是带有快速应用程序的常规node.js.我有一个名为cors的扩展名,它以这种方式表达:
var app = express();
app.configure(function(){
app.use(express.bodyParser());
app.use(app.router);
app.use(cors({origin:"*"}));
});
app.listen(3000);
app.get('/', function(req, res){
res.end("ok");
});
Run Code Online (Sandbox Code Playgroud)
如果我做
curl -v -H "Origin: https://github.com" http://localhost:3000/
Run Code Online (Sandbox Code Playgroud)
它回来了:
* Adding handle: conn: 0x7ff991800000
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7ff991800000) send_pipe: 1, …Run Code Online (Sandbox Code Playgroud) 我有一个在一组对象上运行的算法.该算法产生一个得分值,用于指示集合中元素之间的差异.
排序的输出是这样的:
[1,1,5,6,1,5,10,22,23,23,50,51,51,52,100,112,130,500,512,600,12000,12230]
如果您将这些值放在电子表格中,您会看到它们组成了组
[1,1,5,6,1,5] [10,22,23,23] [50,51,51,52] [100,112,130] [500,512,600] [12000,12230]
有没有办法以编程方式获得这些分组?
也许一些使用机器学习库的聚类算法?还是我在思考这个?
我看过scikit,但他们的例子对我的问题来说太先进了......
在这种情况下,是否可以显示文字不是颠倒的?
http://jsfiddle.net/paulocoelho/Hzsm8/1/
码:
var cfg = {
w:400,
h:400
};
var g = d3.select("#testdiv").append("svg").attr("width", cfg.w).attr("height", cfg.h).append("g")
var arct = d3.svg.arc()
.innerRadius(cfg.h / 5)
.outerRadius(cfg.h / 3)
.startAngle(Math.PI/2)
.endAngle(Math.PI*1.5);
var path = g.append("svg:path")
.attr("id","yyy")
.attr("d", arct)
.style("fill","blue")
.attr("transform", "translate("+cfg.w/2+","+cfg.h/6+")");
var text = g.append("text")
.style("font-size",30)
.style("fill","#F8F8F8")
.attr("dy",35)
.append("textPath")
.attr("xlink:href","#yyy")
.attr("startOffset",50)
.text("some text")
;
Run Code Online (Sandbox Code Playgroud) 在我的场景中我有一条文字。创建后,我旋转它以适合正确的区域。然而,边界框完全忽略了旋转。
\n\n我在这里做了一个小提琴:http://jsfiddle.net/paulocoelho/qMqH7/5/
\n\n如果您检查输出,您会得到:
\n\n// before rotation\nTHREE.Vector3 {x: 28.365000000000006, y: 6.2806, z: 0.5, constructor: function, set: function\xe2\x80\xa6}\nTHREE.Vector3 {x: 0.2542, y: 0, z: 0, constructor: function, set: function\xe2\x80\xa6}\n// after rotation\nTHREE.Vector3 {x: 28.365000000000006, y: 6.2806, z: 0.5, constructor: function, set: function\xe2\x80\xa6}\nTHREE.Vector3 {x: 0.2542, y: 0, z: 0, constructor: function, set: function\xe2\x80\xa6}\nRun Code Online (Sandbox Code Playgroud)\n\n因为我在 Z 轴上旋转 90 度,所以我希望看到“旋转后边界”:
\n\n{x: 2.2806, y: 28.365000000000006, z: 0.5}\nRun Code Online (Sandbox Code Playgroud)\n\n有没有办法可以轻松实现这一目标?
\n我有这个代码:
pPoint = function(x,y){
this.x = x || 0;
this.y = y || 0;
}
pPoint.prototype = {
constructor:pPoint,
add:function(){
return this.x+this.y;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
a = new pPoint(10,20)
console.log(a.add());
Run Code Online (Sandbox Code Playgroud)
按预期工作(返回30).
但是,如果我这样做:
Array.prototype = {
abcd:function(){
console.log("bla bla testing");
}
}
Run Code Online (Sandbox Code Playgroud)
然后这样做:
b = new Array();
b.abcd();
Run Code Online (Sandbox Code Playgroud)
它不起作用......为什么?
我知道如果我这样做很好......
Array.prototype.abcd:function(){
console.log("bla bla testing");
}
}
Run Code Online (Sandbox Code Playgroud)
我只是不明白为什么preivous的工作在我的pPoint而不是在Array ...
我想用我自己的一些函数扩展Array功能.这工作正常.但是,我注意到在控制台中,函数被"附加"到数组中,就好像它们是数据一样.
小提琴:http://jsfiddle.net/BxfCy/1/
这是代码,因为stackoverflow迫使我发布(只需单击小提琴):
a = [1,2,3];
Array.prototype.doMagic = function(){
var returnvar = this;
returnvar.push(42);
return returnvar;
}
console.log(a);
for (var n in a){
console.log(a[n]);
}
Run Code Online (Sandbox Code Playgroud)
我的想法是其他数组函数没有显示在数组中(你知道,像push一样).有没有办法不在数组中显示原型函数?