从模型外部更改变量的值

时间:2016-04-21 19:47:33

标签: javascript knockout.js

function SearchArticleModel() {
        var self = this;
        self.param = ''}

var searchModel = new SearchArticleModel();
ko.applyBindings(searchModel, document.getElementById("ko-search-module"));


$('.tag-menu').on('click', function(e) {
            showSearch();
            // searchModel.param("tags")
}

我需要给param一个字符串值tag。我无法做到这一点。我试过但我被困在这里。我第一次使用淘汰赛,所以我有点困惑。我有我的Knockout模型,其中param值为null。我尝试在调用以下函数时设置param的值。

1 个答案:

答案 0 :(得分:2)

您应该使用ko.observable()让您的更改影响用户界面。

function SearchArticleModel() {
    var self = this;
    self.param = ko.observable()
}

var searchModel = new SearchArticleModel();
ko.applyBindings(searchModel, document.getElementById("ko-search-module"));


$('.tag-menu').on('click', function(e) {
        showSearch();
        // searchModel.param("tags")
}

另外我建议您使用ko click绑定而不是$('.tag-menu').on()

function SearchArticleModel() {
    var self = this;
    self.param = ko.observable()
    self.setParam = function(){
        self.param('tag'); 
   }
}

然后在html:

<a data-bind="click: setParam"></a>

或者您甚至可以从html绑定传递参数:

<a data-bind="click: setParam.bind($data, 'param value')"></a>