无法从 AngularJS 中的控制器初始化对象
Unable to initialize object from controller in AngularJS
fiddle 看起来像这样:
var app = angular.module('testApp', []);
app.controller = angular.('testAppCtrl', function ($scope) {
$scope.vehicle = {
type: 'car',
color: 'red'
};
$scope.vehicleDetail() = function () {
return "Vehicle type : " + vehicle.type + ", "
vehicle.color;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="testApp" ng-controller="testAppCtrl">
<h1>
AngularJS object ng-init powered by controller example
</h1>
Type: <input ng-model='vehicle.type' />
<br/>
Color: <input ng-model='vehicle.color'/>
Vehicle details : {{vehicleDetail()}}
</div>
我试图使用函数从控制器内部初始化对象,而不是使用 ng-init。
问题
Why are the values not getting printed?
您的代码应该如下更正,
这就是您需要定义控制器的方式,而不是像 app.controller = angular.('testAppCtrl', function ($scope) {
。
app.controller('testAppCtrl',function($scope)...
这就是您需要 return 函数 vehicleDetail
中的值的方式,在您的 return 情况下,您无法访问 vehicle
属性,例如 vehicle.color
,您需要像 $scope.vehicle.color
一样访问它,因为 vehicle
在范围内。这个 $scope.vehicleDetail() = function () {..
是错误的,应该更正为 $scope.vehicleDetail = function () {..
$scope.vehicleDetail = function()
{
return "Vehicle type : " + $scope.vehicle.type + ", "+ $scope.vehicle.color;
};
这里是DEMO
fiddle 看起来像这样:
var app = angular.module('testApp', []);
app.controller = angular.('testAppCtrl', function ($scope) {
$scope.vehicle = {
type: 'car',
color: 'red'
};
$scope.vehicleDetail() = function () {
return "Vehicle type : " + vehicle.type + ", "
vehicle.color;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="testApp" ng-controller="testAppCtrl">
<h1>
AngularJS object ng-init powered by controller example
</h1>
Type: <input ng-model='vehicle.type' />
<br/>
Color: <input ng-model='vehicle.color'/>
Vehicle details : {{vehicleDetail()}}
</div>
我试图使用函数从控制器内部初始化对象,而不是使用 ng-init。
问题
Why are the values not getting printed?
您的代码应该如下更正,
这就是您需要定义控制器的方式,而不是像 app.controller = angular.('testAppCtrl', function ($scope) {
。
app.controller('testAppCtrl',function($scope)...
这就是您需要 return 函数 vehicleDetail
中的值的方式,在您的 return 情况下,您无法访问 vehicle
属性,例如 vehicle.color
,您需要像 $scope.vehicle.color
一样访问它,因为 vehicle
在范围内。这个 $scope.vehicleDetail() = function () {..
是错误的,应该更正为 $scope.vehicleDetail = function () {..
$scope.vehicleDetail = function()
{
return "Vehicle type : " + $scope.vehicle.type + ", "+ $scope.vehicle.color;
};
这里是DEMO