【发布时间】:2014-01-15 01:51:07
【问题描述】:
我有这段代码,但我看不出问题的根源在哪里,我在 chrome 控制台中没有收到任何错误 我的控制器:
function notifController($scope) {
$scope.refreshMsgs = function () {
$.post("notification-center-trait.aspx")
.success(function (data) {
$("#loadedthings").html(data);
newMsgs = JSON.parse($("#label1").html());
$scope.msgs = newMsgs;
});
}
$scope.refreshMsgs();
}
label1 和 label2 在 div 中被正确加载;
控制台中的newMsgs 会按照应有的方式进行解析;
我让它在其他页面上工作,但似乎我错过了这个页面上的一些东西。我有 <html ng-app> 标签:
<div ng-controller="notifController">
<div class="row">
{{msgs.length}} new msgs :
<table class="table">
<tbody >
<tr ng-repeat="msg in msgs">
<td>
{{msg.sender}}
</td>
<td>
{{msg.message}}
</td>
<td>
{{msg.date}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
当我执行此操作时,我在控制台中得到“未定义”:angular.element($0).scope()
【问题讨论】:
-
你确定
$0工作正常吗?我不知道你在做什么...... -
我测试了你的代码,这里一切正常。我怀疑你不恰当地弄乱了 DOM 并且犯了一个错误。像
angular.element这样的任何东西都属于指令。 Angular 使 scope 属性在你需要的任何地方都可用,除了可能罕见的例外,所以你不应该需要以这种方式访问元素或范围。 -
@m59 我刚刚在 chrome 控制台中执行了
angular.element($0).scope(),只是为了看看我的范围内发生了什么link,但我得到'未定义' -
正如我所说,使用您这里的代码,控制器已初始化并且数据绑定正在工作。此代码未传达您遇到的问题。为了绝对确定,请执行以下操作:
$scope.foo = 'test'并在您的标记中:{{foo}}。也许您的 ajax 调用没有通过?如果控制器真的不工作,其他的东西(不在此代码中)是问题。 -
你刚才描述的甚至是无效的......那必须是
{{foo}}。你肯定有一个简单的错误,你可以用控制台调试,我敢肯定。此外,Angular 有$http用于 ajax 调用,你应该使用它而不是 jQuery。
标签: javascript angularjs angularjs-scope