2016-12-13 56 views
0

我正在向我的控制器注入值提供程序,并且我得到一个对象,但是当我尝试使用.toString(),String()或任何其他方法读取该对象时,我只获得[Object object]浏览器或终端。我错过了什么?角度值提供者不工作

(function() { 
 
    angular 
 
     .module("myApp", [ 
 
      'ngRoute' 
 
     ]); 
 
})(); 
 

 
(function() { 
 
    angular.module("myApp").constant('myValue', 3) 
 
})(); 
 

 
(function() { 
 
    angular 
 
     .module("myApp") 
 
     .controller('AllCtrl', ['myValue', setHome]); 
 

 
    function setHome(myValue) { 
 

 
     console.log("Value: " + myValue); 
 

 
    } 
 

 
})();

+0

无法重现:http://plnkr.co/edit/7WQ3bz5Ao3fgT2CNvkRx?p=preview。在plunkr中发布一个完整的示例,重现问题 –

+0

来自您想要通过的对象在哪里?它来自Razor或ejs之类的模板引擎吗?如果是这样,你需要做对象的'raw'格式。例如,在Razor中,它是'.value(“myValue”,@ Html.Raw([JSON serialized model]))''。在ejs中它会是'.value(“myValue”,<% - [JSON序列化对象]%>) – mhodges

+0

这是我创建的Plunker –

回答

1

当你从像剃刀,或EJS模板引擎传递一个对象,你需要使用对象的原始格式。

在剃刀中,例如,它是.value("myValue", @Html.Raw([JSON serialized model]))

在EJS这将是.value("myValue", <%- [JSON serialized object] %>)

// *some .js file* 
(function() { 
    angular 
     .module("myApp", [ 
      'ngRoute' 
     ]); 
})(); 

// *in your .ejs file* 
(function() { 
    // for ejs 
    angular.module("myApp").constant('myValue', <%- jsonObject %>); 
    // for Razor 
    angular.module("myApp").constant('myValue', @Html.Raw(jsonObject)); 
})(); 

// *in another .js file* 
(function() { 
    angular 
     .module("myApp") 
     .controller('AllCtrl', ['myValue', setHome]); 

    function setHome(myValue) { 

     console.log("Value: " + myValue); 

    } 

})(); 
+0

I试图使用控制器中的值,而不一定在我的ejs模板上使用它。对不起,我目前的项目很大,我的控制器上有我所有的业务逻辑,我正在寻找一种方法,通过使用工厂,价值观,服务等来最小化他们。 –

+0

@wjr这就是我的答案......你从ejs中取出物体并将其注入角度控制器。你试过这个吗? – mhodges

+0

我试图在控制器中使用值/常量而不将它发送到我的模板。换句话说,将值或常量提供程序的值或函数调用到我的控制器。那可能吗?到目前为止,我使用$ rootScope在项目中使用值,但我不知道是否可以使用提供者。希望我解释得更好,再次感谢你! –