数据绑定返回带有数据绑定的 html a href

Posted

技术标签:

【中文标题】数据绑定返回带有数据绑定的 html a href【英文标题】:Data-bind return html a href with data-bind 【发布时间】:2021-06-27 09:26:31 【问题描述】:

我在将数据绑定到返回 observable 时遇到问题,

我的html代码:

    <form data-bind="submit: capitalizeNames">

    <p><label>Prénom : <input data-bind="value: firstName" /></label></p>

    <p><label>Nom: <input data-bind="value: lastName" /></label></p>

    <p>Nom complet: <strong data-bind="html: fullName" ></strong></p>

    <button type="submit">Valider</button>

</form>

我的 js knwockout :

            self.fullName = ko.computed(function() 
            var firstName = self.firstName();
            return '<a data-bind="click: $root.test" href="#">' + firstName + '</a>';

        );

        self.test = function() 
            console.log("test");
        

我无法触发测试功能

请问解决方案是什么?谢谢!

【问题讨论】:

【参考方案1】:

html 绑定不applyBindings 到它注入的内容。在这个特定的示例中,我认为您最好使用 text 绑定。您可以将 &lt;a&gt; 标记放在您的 HTML 中,而不是您的视图模型中。

function ViewModel() 
  var self = this;
  
  self.firstName = ko.observable("Jane");
  self.lastName = ko.observable("Doe");
  
  self.fullName = ko.computed(function() 
    var firstName = self.firstName();
    return firstName;
  );

  self.test = function() 
    console.log("test");
  


ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<p><label>Prénom : <input data-bind="value: firstName" /></label></p>
<p><label>Nom: <input data-bind="value: lastName" /></label></p>
<p>Nom complet: <strong><a data-bind="text: fullName, click: test" href="#"></a></strong></p>

如果您想将 &lt;a&gt; 标记与主 HTML 分开,最好使用 template binding 或 knockout component。

【讨论】:

以上是关于数据绑定返回带有数据绑定的 html a href的主要内容,如果未能解决你的问题,请参考以下文章

vue双向绑定原理

数据绑定的几种方式

AngularJS 的数据绑定

Study Blazor .NET数据绑定

Combox绑定数据

asp.net bind()和eval()的区别