【问题标题】:Angular value provider not working角度值提供程序不起作用
【发布时间】:2017-04-28 18:46:22
【问题描述】:

我将值提供程序注入到我的控制器中并获得了一个对象,但是当我尝试通过使用.toString()String() 或任何其他方法读取该对象时,我只能获得[Object object] on浏览器或终端。我错过了什么吗?

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

    }

})();

【问题讨论】:

  • 无法复制:plnkr.co/edit/7WQ3bz5Ao3fgT2CNvkRx?p=preview。在 plunkr 中发布一个完整的示例,重现问题
  • 你想通过的对象来自哪里?是来自 Razor 之类的模板引擎还是 ejs?如果是这样,则需要对对象进行raw 格式。例如,在 Razor 中,它是 .value("myValue", @Html.Raw([JSON serialized model]))。在 ejs 中它将是 .value("myValue", <%- [JSON serialized object] %>)
  • 这是我创建的 Plunker

标签: angularjs code-injection inject provider


【解决方案1】:

当您从 Razor 或 ejs 等模板引擎传递对象时,您需要使用对象的原始格式。

例如,在 Razor 中,它是 .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);

    }

})();

【讨论】:

  • 我正在尝试在控制器中使用该值,而不必在我的 ejs 模板上使用它。抱歉,我当前的项目很大,我的控制器上有我所有的业务逻辑,我正在寻找一种通过使用工厂、值、服务等来最小化它们的方法。
  • @wjr 这正是我的答案......你从 ejs 获取对象并将其注入你的角度控制器。你试过了吗?
  • 我正在尝试在控制器中使用值/常量而不将其发送到我的模板。换句话说,从值或常量提供者向我的控制器调用值或函数。那可能吗?到目前为止,我使用 $rootScope 在整个项目中使用值,但我不知道是否可以使用提供程序。希望我解释得更好,再次感谢您!
  • @wjr 那么你是想在多个控制器之间共享值,还是想在多个模块之间注入值?
  • @kennypowers 你是如何对myObject进行json编码的?我遇到了Json.Encode() 的大小问题,不得不改用Newtonsoft.Json.JsonConvert.SerializeObject()
猜你喜欢
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多