首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在指令中使用角度值服务?

在指令中使用角度值服务?
EN

Stack Overflow用户
提问于 2014-11-21 02:24:53
回答 4查看 152关注 0票数 0

我有一个指令需要显示值服务中存储的数据。它看起来像这样:

代码语言:javascript
复制
angular.module('myApp', [])
.value('user', {})
.run(['user', function (user) {
    // "user" value is set by result of $http.get(),
    // but hard-coding value for example purposes
    user = {
        name: 'Foo'
    };
}])
.directive('userProfile', ['user', function (user) {
    return {
        restrict: 'E',
        controller: function ($scope) {
            $scope.user = user;
        },
        template: '<span>User name: {{ user.name }}</span>'
    };
}]);

然而,当指令的控制器获得注入的user对象时,它就是undefined。我是不是遗漏了什么?

下面是可以使用的实时代码:http://jsfiddle.net/HB7LU/8433/

EN

回答 4

Stack Overflow用户

发布于 2014-11-21 03:12:56

working sample

代码语言:javascript
复制
angular.module('myApp', [])
.value('user', {})
.run(['user', function (user) {
    // "user" value is set by result of $http.get(),
    // but hard-coding value for example purposes
    user.hardCoded = {
        name: 'Foo'
    };
}])
.directive('userProfile', ['user', function (user) {
    return {
        restrict: 'E',
        controller: function ($scope) {
            $scope.user = user.hardCoded;
        },
        template: '<span>User name: {{ user.name }}</span>'
    };
}]);

由于指令创建了自己的作用域,因此您可以通过使用原型链接进行更高级别的操作。

不是只使用'user‘对象,而是添加一个点。

票数 0
EN

Stack Overflow用户

发布于 2014-11-21 18:41:07

以下是工作示例

http://jsfiddle.net/HB7LU/8460/

尝试下面的代码

代码语言:javascript
复制
     angular.module('myApp', [])
    .value('user', {name:'foo'})

   .directive('userProfile', ['user', function (user) {
    return {
    restrict: 'E',
    controller: function ($scope) {
        $scope.user = user;
    },
    template: '<span>User name: {{ user.name }}</span>'
};
}]);
票数 0
EN

Stack Overflow用户

发布于 2014-11-21 18:50:48

run函数引用user变量

考虑您的代码的以下部分:

代码语言:javascript
复制
angular.module('myApp', [])
.run(['user', function (user) {
    // "user" value is set by result of $http.get(),
    // but hard-coding value for example purposes
    user = {
        name: 'Foo'
    };
}]);

不是设置用户的属性,而是重新引用angular.value("user")参数以指向其他内容。您应该改为这样做:

代码语言:javascript
复制
angular.module('myApp', [])
.run(['user', function (user) {
    // "user" value is set by result of $http.get(),
    // but hard-coding value for example purposes
    user.name = "Foo";
    // you are setting the properties of user
}]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27046822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档