Knockout.js 淘汰赛表演/隐藏不适用于durandal

Knockout.js 淘汰赛表演/隐藏不适用于durandal,knockout.js,durandal,Knockout.js,Durandal,我使用了knockoutifbinding根据模型中的值显示/隐藏div var model = { // Model----------------------------------------------- router: router, chosen: chosen, selectedItems: [], selectedItemsList: [], p: { Id:

我使用了knockout
if
binding根据模型中的值显示/隐藏div

var model = {
        // Model-----------------------------------------------
        router: router,
        chosen: chosen,
        selectedItems: [],
        selectedItemsList: [],
        p: {
            Id: null,
            IsValid : false
        },

         activate: function (id) {
            var self = this;
            var apiRoute = 'test/id';
            return api.GetModel(apiRoute, null, self);
         },
         approve: function ()
         {
            return self.activate(1);
         }
 };

 <!-- ko if: p.IsValid -->
    <div></div>
<!-- /ko -->
var模型={
//模型-----------------------------------------------
路由器:路由器,,
选择:选择,
selectedItems:[],
selectedItemsList:[],
p:{
Id:null,
IsValid:false
},
激活:功能(id){
var self=这个;
var apiRoute='test/id';
返回api.GetModel(apiRoute,null,self);
},
批准:职能部门()
{
返回自激活(1);
}
};
当应用程序第一次加载时,这种方法就起作用了。但要刷新视图,我只需单击按钮即可调用
self.activate()
。调用
self.activate()
后,显示/隐藏功能停止工作

有人能帮我找出问题出在哪里吗?

你可以用

在viewModel中

   viewModel ={
     activate: activate,
     title: 'Bewertung',
     attached: attached,
     someVal : ko.observable(true)
   }


  return viewModel
在视图中

 <div data-bind="visible: someVal"></div>

要更改可见性,您可以访问
“someVal”
,如下
viewModel.someVal(false)
from
attached
,例如

尝试以下操作:

viewModel ={
 activate: activate,
 title: 'Bewertung',
 attached: attached,
 someVal : ko.observable(true)
}



您需要共享更多代码。var model={//model---------------------------------------------路由器:路由器,已选择:已选择,已选择EditEMS:[],已选择EditEmsList:[],p:{Id:null,IsValid:false},激活:函数(Id){var self=this;var apiRoute='test/id';return api.GetModel(apiRoute,null,self);},approve:function(){return self.activate(1);};您在问题的左下角有一个编辑链接hmmm..您似乎没有在此处使用observables。您需要重新激活视图以刷新视图的原因是什么?感谢您的回复,但visible也没有工作var model={//模型------------------------------------------路由器:路由器,已选择:已选择,已选择EditeMs:[],已选择EditeMsList:[],p:{Id:null,IsValid:false},激活:函数(Id){var self=this;var apiRoute='test/id';return api.GetModel(apiRoute,null,self);},approve:function(){return self.activate(1);};
<div data-bind="visible: someVal()"></div>