knockoutjs: can we create a dependentObservable function with a parameter?

前端 未结 3 900
忘掉有多难
忘掉有多难 2020-11-30 10:52

I have multiple input boxes that I want to hide/unhide based on a selection from user.

I can achieve this by having a separate dependentObservable for each input an

3条回答
  •  南方客
    南方客 (楼主)
    2020-11-30 11:38

    In Knockout, bindings are implemented internally using dependentObservables, so you can actually use a plain function in place of a dependentObservable in your bindings. The binding will run your function inside of a dependentObservable, so any observables that have their value accessed will create a dependency (your binding will fire again when it changes).

    Here is a sample: http://jsfiddle.net/rniemeyer/2pB9Y/

    html

    type "one", "two", or "three":  
    

      js

      
      
      var viewModel = {
          text: ko.observable("one"),
          items: [{name: "one"}, {name: "two"}, {name: "three"}],
      };
      
      viewModel.shouldThisBeVisible = function(name) {
          return this.text() === name;
      }.bind(viewModel);
      
      ko.applyBindings(viewModel);
      

    提交回复
    热议问题