包含在模板中时AngularJS绑定不起作用
创建动态面板时:包含在模板中时AngularJS绑定不起作用,angularjs,angularjs-ng-include,Angularjs,Angularjs Ng Include,创建动态面板时: <div ng-controller="widgetCtrl"> <div drag-group="widgets"> <div class="panel panel-primary" ng-repeat="widget in widgets" draggable-widget="widget" draggable-widget-callback="moveWidget"> <div class="panel-h
<div ng-controller="widgetCtrl">
<div drag-group="widgets">
<div class="panel panel-primary" ng-repeat="widget in widgets" draggable-widget="widget" draggable-widget-callback="moveWidget">
<div class="panel-heading" ng-include="widget.header" draggable-widget-handle></div>
<div ng-include="widget.body"></div>
<div class="panel-footer" ng-include="widget.footer"></div>
</div>
</div>
</div>
ng中的绑定包括(include sites.html):
失败,因为我得到以下错误:
http://errors.angularjs.org/1.5.9/ng/areq?p0=SiteCtrl&p1=not%20aNaNunction%2C%20got%20undefined
当所有代码都驻留在一个文件(index.html)中时,一切都很好。我已经寻找了几个星期试图解决这个问题,但我对AngularJS非常陌生。如果没有看到更多的代码/html,很难判断,但Angular的错误是SiteCtrl控制器没有解析为函数,这意味着它从未启动过。这可能是一个包含顺序问题,或者您没有将
app.controller
包装到函数闭包ala(function(){/*code here*/})()代码>HTML都可以工作,似乎ng控制器和绑定在移动到包含(ng include)后就不能工作。一般来说,应该避免使用ng include。你能把它做成一个单独的组件吗?我不理解你的评论,你能澄清并提供例子吗?在这一点上,我所能想到的是,在没有看到你所做的结构的情况下,你的Angular代码可能不在一个单独的include.js文件中ng include
创建一个新的根作用域(不继承),因此,如果您的应用程序/控制器代码位于页面上的HTML脚本标记中,则include可能无法解析控制器。无论哪种方式,您得到的错误都会告诉您,无论出于何种原因,它都无法解析控制器,因此几乎可以肯定这是一个包含/包含顺序问题。嗯!如果看不到更多的代码/html,很难判断,但是Angular的错误是说SiteCtrl控制器不能解析为函数,这意味着它从未被引导过。这可能是一个包含顺序问题,或者您没有将app.controller
包装到函数闭包ala(function(){/*code here*/})()代码>HTML都可以工作,似乎ng控制器和绑定在移动到包含(ng include)后就不能工作。一般来说,应该避免使用ng include。你能把它做成一个单独的组件吗?我不理解你的评论,你能澄清并提供例子吗?在这一点上,我所能想到的是,在没有看到你所做的结构的情况下,你的Angular代码可能不在一个单独的include.js文件中ng include
创建一个新的根作用域(不继承),因此,如果您的应用程序/控制器代码位于页面上的HTML脚本标记中,则include可能无法解析控制器。无论哪种方式,您得到的错误都会告诉您,无论出于何种原因,它都无法解析控制器,因此几乎可以肯定这是一个包含/包含顺序问题。嗯!
<div class="panel-body" ng-controller="SiteCtrl as ctrlsite">
<table class="table-condensed table-fixed table-hover">
<thead>
<tr>
<th class="col-lg-3 col-md-3 col-sm-3 col-xs-3 ">name</th>
<th class="col-lg-3 col-md-3 col-sm-3 col-xs-3 ">connection</th>
<th class="col-lg-3 col-md-3 col-sm-3 col-xs-3 ">location</th>
<th class="col-lg-2 col-md-2 col-sm-2 col-xs-2 ">contact</th>
<th class="col-lg-1 col-md-1 col-sm-1 col-xs-1"><a ng-click="ctrlsite.expandAll(allExpanded = !allExpanded)" data-toggle="tooltip" data-placement="top" title="All Details"><i class="zmdi zmdi-more zmdi-hc-2x"></i></a></th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="site in ctrlsite.sites">
<td class="col-lg-3 col-md-3 col-sm-3 col-xs-3 h-dotted-line">{{site.SiteName}}<br/>
<span class="tr-secondary-row text-capitalize" ng-repeat="connection in site.Connections">{{connection.ExternalIP}}</span></td> ... </div>
var app = angular.module('myApp', ['ngMessages', 'ngResource', 'angular.filter', 'dndLists'])
.factory('Sites', function ($resource) {
return $resource('data/sites.json');
});
app.controller('SiteCtrl', function ($scope, Sites) {
var self = this;
console.log("SiteCtrl hit");
console.log($scope.$id);
self.sites = Sites.query();
self.expandAll = function (expanded) {
// $scope is required here, hence the injection above, even though we're using "controller as" syntax
$scope.$broadcast('onExpandAll', {
expanded: expanded
});
};
});
http://errors.angularjs.org/1.5.9/ng/areq?p0=SiteCtrl&p1=not%20aNaNunction%2C%20got%20undefined