我的Angular代码返回[object Object]。我在不同的页面上调用2个控制器。第一个设置ng-click数据,第二个获取(显示)数据。这是代码:
Angular应用代码:
var careerApp = angular.module("careerApp", []);
careerApp.factory('myService', function () {
var savedData = {};
function set(data) {
savedData = data;
}
function get() {
return savedData;
}
return {
set: set,
get: get
}
});
careerApp.controller("JobList", function ($scope,myService) {
myService.set(data);
});
careerApp.controller("JobSelection", function ($scope, myService) {
$scope.jobname = myService.get();
});
第1页上的HTML
<div class="center-details" ng-controller="JobList">
<div class="details" ng-click="set(data)" >
<h2 class="name" ng-model="jobtitle">
Winter
</h2>
<p><b>Job ID#</b> <span class="jobid">2017-01</span></p>
</div>
</div>
第2页的HTML
<div ng-controller="JobSelection">
<label ng-bind="jobname"></label>
</div>
答案 0 :(得分:2)
您将整个对象带入
<label ng-bind="jobname"></label>
如果您打算使用更好的格式编写对象,请尝试将其更改为:
<label> {{ jobname | json }}</label>
这样它将被格式化并打印为json对象。
答案 1 :(得分:0)
使用ng-bind的Angular表达式intead。否则,您必须指定对象的特定属性。
第1页
<div class="center-details" ng-controller="JobList">
<div class="details" ng-click="set('Winter')" >
<h2 class="name">
Winter
</h2>
<p><b>Job ID#</b> <span class="jobid">2017-01</span></p>
</div>
</div>
控制器:
careerApp.controller("JobList", function ($scope,myService) {
$scope.set= function(data){
myService.set(data);
}
});
第2页
<label ng-bind="jobname"></label>
<label>{{jobname}}</label>
如何根据输入动态制作
<input stype="text" ng-model="jobTitle" ng-change="set()" >
<h2 class="name">
{{jobTitle}}
</h2>
控制器:
careerApp.controller("JobList", function ($scope,myService) {
$scope.jobTitle = "";
//This function will be called every time that jobTitle change its value.
$scope.set= function(){
myService.set($scope.jobTitle);
}
});
备注:强>
考虑到ng-model
指令将输入绑定,选择textarea值到范围内的属性。
由于您在控制器定义中有此分配
$scope.jobname = myService.get();
如果在用户点击之前运行此控制器,它将为空。它不会在每次点击时刷新。