无法绑定其他函数的值

时间:2013-12-24 14:50:51

标签: jquery knockout.js requirejs knockout-mvc

我正在开发单页面应用程序(用于UI的durundaljs和knockjs)。  在view.js文件

var vm= = function() {
            Id: ko.observable();
            Name: ko.observable();
            description: ko.observable();
            parentName:ko.observable();
}

页面activate()方法我将值分配给可观察属性。

var activate = function(Id) {

            getUserGroup(Id);
};
var getUserGroup = function(Id) {
            var ajaxOptions = {
                url: 'Api/Group/Get?id=' + Id,
                type: 'GET',
                dataType: 'json'
            };

            function gotUserGroup(data) {

                vm.Id = data.Id;
                vm.Name = data.name;
                vm.description = data.description;
                vm.parentName =getName(data.parentId)                
            }

            return $.ajax(ajaxOptions).then(gotUserGroup);
        };

function getName(Id)
{
            var ajaxOptions = {
               url: 'Api/Client/Get?Id=' + Id,
                type: 'GET',
                dataType: 'json'
            };
            function getValue(data) {
                return data.name;

            }

            $.ajax(ajaxOptions).then(getValue);
}

我面临的问题是我无法将值分配给parentName属性。 我有一个查询,比如我们如何在knockoutjs中绑定。 在我的情况下,我需要获得parentId值,并根据它获得parentname。 并且该值应绑定到parentName属性。 任何人都可以建议我如何实现这一目标。

1 个答案:

答案 0 :(得分:0)

var getUserGroup = function(Id) {
            var ajaxOptions = {
                url: 'Api/Group/Get?id=' + Id,
                type: 'GET',
                dataType: 'json'
            };

            function gotUserGroup(data) {

                vm.Id = data.Id;
                vm.Name = data.name;
                vm.description = data.description;
                vm.parentName =getName(data.parentId)  
return data;              
            }

    function getName(data.Id)
    {
                var ajaxOptions = {
                   url: 'Api/Client/Get?Id=' + Id,
                    type: 'GET',
                    dataType: 'json'
                };
                function getValue(data) {
                    return data.name;

                }

               $.ajax(ajaxOptions).then(getValue);
    }

            return $.ajax(ajaxOptions).then(gotUserGroup).then(getName);
        };