角度返回[对象对象]

时间:2017-01-02 20:13:19

标签: angularjs

我的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>

2 个答案:

答案 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();

如果在用户点击之前运行此控制器,它将为空。它不会在每次点击时刷新。