2016-12-13 52 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在項目中使用值,但我不知道是否可以使用提供者。希望我解釋得更好,再次感謝你! –