”, controller:‘MetricController’, 控制器:’’ MEC </跨度> “ } } })
安慰
您正在混合两个概念控制器别名和$ scope,在您创建控制器别名为MEC using的情况下 controllerAs 。如果您使用控制器别名,那么这将适合您:
controllerAs
function MetricController($scope, metricManager, $log) { var MEC = this; metricManager.getMetric(0).then(function(metric) { MEC.metric = metric $log.info('$scope.metric printed to console below:'); $log.info($scope.metric); }) }
如果您不想使用控制器别名并通过$ scope在视图和控制器之间共享数据,那么在您的视图中,您应该使用类似此{{:: metric.metadata.name}}的内容,并且控制器功能应保持原样。
PS:如果你正在使用别名那么MEC in var MEC = this 可以是MEC或abc或您喜欢的任何名称,但约定是使用 var vm = this 和 controllerAs: 'vm' 。如果你有控制器:'xyz'然后在你的视图中 xyz 应该用来访问模型。
var MEC = this
var vm = this
controllerAs: 'vm'
xyz
您的视图HTML问题,您需要在绑定时使用正确的Angular表达式。当你想使用:: MEC别名时,你需要用你的控制器标记 as keyowrd,喜欢 ng-controller="xyz as MEC" 。结帐工作 Plunker
as
ng-controller="xyz as MEC"
<div class="panel panel-primary"> <div class="panel-body"> <!-- Try First Way to Print Results --> Id: <span ng-bind="metric.id"></span> <br> Name1: <input type="text" ng-model="metric.metadata.name" /> <br><br><br><br> <!-- Try Second Way to Print Results --> <p data-ng-repeat="thing in [metric] track by $index"> {{$index + 1}}. <span>{{thing.metadata.name}}</span> <span class="glyphicon glyphicon-info-sign"></span> </p><br><br><br> <!-- Try Third Way to Print Results --> Id: <span ng-bind="metric.metricId"></span> <br> Id: <span ng-bind="metric.id"></span> <br><br><br> <!-- Try Fourth Way to Print Results --> Id: <strong>{{::metric.id}}</strong> <br> Name: <strong>{{::metric.metadata.name}}</strong> <br> Height: <strong>{{::metric.type}}</strong> </div> </div>