【问题标题】:How to declare a guid in Knockout如何在 Knockout 中声明 guid
【发布时间】:2015-09-18 11:30:08
【问题描述】:

有人可以指点我如何在淘汰赛中声明 GUID 的方向。

对于一个字符串并将它的 int

self.Idnumber(0);
self.name("");

对于一个 guid 会不会是类似的东西

self.Guid(FAE04EC0-301F-11D3-BF4B-00C04F79EFBC) 

或者只是

self.Guid(0)

【问题讨论】:

  • 是否需要在前端生成一个Guid?如果您只需要一个淘汰变量来保存一个 guid,只需声明它并将其用作 self.Id = ko.observable('FAE04EC0-301F-11D3-BF4B-00C04F79EFBC')
  • 现在我明白了 Guid 只是一个字符串声明你如何声明字符串 self.Guid('FAE04EC0-30....') 。欢呼

标签: c# asp.net-mvc mvvm knockout.js


【解决方案1】:

Knockout / 客户端 js 中没有内置的 guid 方法。为此,您可以添加辅助函数。

以下函数返回完美的GUID

    function guid() {
        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
            var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
            return v.toString(16);
        });
    }

只需将上述代码添加到全局使用的your js 中即可。只需调用此函数。它将返回正确的guid

您可以将硬编码的 guid 声明为 observable,如下所示:

self.Guid = ko.observable('FAE04EC0-301F-11D3-BF4B-00C04F79EFBC')

要使其动态化,请包含guid() 函数并执行如下调用:

self.Guid = ko.observable(guid())

在可观察变量声明后赋值:

self.Guid(guid());
//or
self.Guid('FAE04EC0-301F-11D3-BF4B-00C04F79EFBC');

【讨论】:

  • OP 正在寻找 how to declare 而不是如何生成。
  • @supercool 我已经更新了我的答案。谢谢指正。
【解决方案2】:

只需编写类似的 javascript guid 生成器函数

var guidGenerator =  function () {
    return {
        newuuid: function () {

            var s = [];
            var hexDigits = "0123456789abcdef";
            for (var i = 0; i < 36; i++) {
                s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
            }
            s[14] = "4";  // bits 12-15 of the time_hi_and_version field to 0010
            s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);  // bits 6-7 of the clock_seq_hi_and_reserved to 01
            s[8] = s[13] = s[18] = s[23] = "-";
            return s.join("");
        }
    }

这样称呼

self.guid(guidGenerator.newuudid());

希望对你有帮助

【讨论】:

  • 只是在找声明方法
  • 这是我遇到的更简单的方法function createGUID() { function s4() { return Math.floor((1 + Math.random()) * 0x10000) .toString(16) .substring(1); } return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); }
【解决方案3】:

我是这样创作的

     function CreateGuid() {
            var guid = (function () {
                function s4() {
                    return Math.floor((1 + Math.random()) * 0x10000)
                               .toString(16)
                               .substring(1);
                }
                return function () {
                    return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
                           s4() + '-' + s4() + s4() + s4();
                };
            })();
            return guid();
        }

请检查是否对您有帮助。

【讨论】:

    【解决方案4】:

    KO 没有默认类型 guid,但在建议之下。

    客户端 JS:

    //This is a function to help verify that the guid is empty, good for future usage.
        function IsGuidEmpty (guid) {
            var emptyGuid = "00000000-0000-0000-0000-000000000000";
            if (guid === emptyGuid)
                return true;
            else
                return false;
        }
        //This is a function to set the guid to empty.
     function () SetEmptyGuid {
            var emptyGuid = "00000000-0000-0000-0000-000000000000";
            return emptyGuid;
        }
    

    KO ViewModel:

    self.Guid = ko.observable(SetEmptyGuid());
    

    服务器端 C#:

    // your API or controller
         if (yourGuid != Guid.Empty)
        {
            //Todo
        }
    

    【讨论】:

      猜你喜欢
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 2015-05-24
      相关资源
      最近更新 更多