0

我有一个用 Grails 2.2.0 编写的 jQuery 重应用程序。该应用程序的很大一部分是一个单页应用程序,到目前为止我基本上一直在做的是将所需的 HTML 拉入DIVvia $.load()

我开始在应用程序中添加一些 AngularJS,因为我想我最终想用 AngularJS 替换大多数纯 jQuery,但我遇到了一个问题。

如果我在主布局文件中包含要拉入 AngularJS 的脚本标签,然后我想在其上执行某些 AngularJS 功能的页面$.load()在某个时候被拉入,AngularJS 似乎不会自行引导。

但是,如果我将拉入 AngularJS 的脚本标签放在通过它拉入的 HTML 片段中,$.load()它就可以正常工作。

有没有我对 AngularJS 不太了解的原因?我使用的测试代码很简单,可以在这个jsFiddle中查看。

的HTML:

<div ng-app="attributeApp">
    <div ng-controller="AttributeCtrl">
        <input type="text" ng-model="master.name" />
        <div>{{master.name}}</div>
    </div>
</div>

Javascript:

var app = angular.module("attributeApp", []);

app.controller("AttributeCtrl", function ($scope) {
    $scope.master = {
        name: "some name"
    };
});
4

1 回答 1

2

我能让你的 jsFiddle 在这里工作:http: //jsfiddle.net/sYPqn/

这是我为使您的引导方案正常工作而修改的 js:

angular.module("attributeApp", [])
.controller("AttributeCtrl", function ($scope) {
    $scope.master = {
        name: "some name"
    };
});

console.log("Angular: %j", angular);
console.log("ra: %j",  rootApp);    
angular.bootstrap(rootApp, ['attributeApp']);

我删除了 DOM 中的 ng-app="module" 部分,因为我认为这不是必需的,而且它也可能令人困惑。我用一个命名的 div id 替换它,并根据元素的 id 引导应用程序。

于 2013-05-14T02:55:12.997 回答