我对AngularJS有疑问;这是我不理解的行为 - 也就是说,我曾经期待过一件事,但却得到了完全不同的东西。现在意外的行为可能是正确的,但我想了解它为什么会发生。
鉴于这个非常粗糙的代码(这是作为POC的实际代码):
angular.module('myApp')
.factory('Promises', function ($q) {
return {
promises: function (val) {
var d = $q.defer();
setTimeout(function() {
d.resolve(val);
}, 1000);
return d.promise;
}
};
});
angular.module('myApp')
.controller('MainCtrl', function (Promises) {
console.log("Reload!");
this.messages = this.messages || [ "hello" ];
var that = this;
this.scrappy = function() {
console.log("Before: ", that.messages);
Promises.promises(12).then(function(promise) {
console.log("Fetching a promise", promise);
that.messages.push("" + promise.toString());
console.log("During: ", that.messages);
}).finally(
function(x) { console.log("Finaly: ", that.messages); }
);
};
});
到目前为止一切顺利;我有一个冗长的函数,当我ng-click
某个按钮时,会调用一个激活承诺的scrappy函数,一秒钟之后,列表会收到一个带有插入值的推送。
右?至少;那是我的推定......
结果发生了其他事情,我无法弄清楚原因,或者背后的原因是什么。
当我在浏览器中启动我的应用程序并单击按钮两次时;这就是console.log告诉我的:
# first hit
Reload! main.js:12
# now I click the button
Before: ["hello"] main.js:17
Reload! main.js:12
Fetching a promise 12 main.js:20
During: ["hello", "12"] main.js:22
Finaly: ["hello", "12"] main.js:25
# now I click the button again
Before: ["hello"] main.js:17
Reload! main.js:12
Fetching a promise 12 main.js:20
During: ["hello", "12"] main.js:22
Finaly: ["hello", "12"] main.js:25
这里最大的问题是:
[编辑]
按要求; HTML(原样):
<div class="jumbotron" ng-controller='MainCtrl as main'>
<h1>'Allo, 'Allo!</h1>
<p class="lead">
<img src="images/yeoman.png" alt="I'm Yeoman"><br>
Always a pleasure scaffolding your apps.
</p>
<p><a class="btn btn-lg btn-success" ng-href="#" ng-click="main.scrappy()">Splendid!<span class="glyphicon glyphicon-ok"></span></a></p>
</div>
BTW:这是使用routeProvider
[/编辑]
答案 0 :(得分:0)
你的html中某个ng-controller='MainCtrl'
或ng-repeat
可能有ng-include