Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从数组计算的可更新的KO_Javascript_Arrays_Knockout.js - Fatal编程技术网

Javascript 从数组计算的可更新的KO

Javascript 从数组计算的可更新的KO,javascript,arrays,knockout.js,Javascript,Arrays,Knockout.js,在我的模型中,我有一个可观测的计算值。它是可更新的。它将选择数组中的第一个值写入用户角色数组,但从中读取正确的值,所以很混乱。如果您尝试my,您将看到,在从中选择另一个值之后,选择另一个依赖项不会发生更改。我怎样才能让它工作?谢谢大家! <div id="UserManagement" class="container"> <div class="col-md-12"> <div data-bind="with: user"> <

在我的模型中,我有一个可观测的计算值。它是可更新的。它将选择数组中的第一个值写入用户角色数组,但从中读取正确的值,所以很混乱。如果您尝试my,您将看到,在从中选择另一个值之后,选择另一个依赖项不会发生更改。我怎样才能让它工作?谢谢大家!

<div id="UserManagement" class="container">
<div class="col-md-12">
    <div data-bind="with: user">
        <select data-bind="options: $root.apps, value: app, optionsText: 'name', optionsValue: 'code'"></select>
    </div>
    <select data-bind="options: apps, value: user().app, optionsText: 'name', optionsValue: 'code'"></select>
    <!-- ko foreach: user().roles -->
    <input type="text" data-bind="value : $data" />
    <!-- /ko -->
</div>

函数UserManagementModel(){
var self=这个;
self.apps=[{
代码:“角色\应用程序1”,
名称:“App1”
}, {
代码:“角色\应用程序2”,
名称:“App2”
}, {
代码:“角色管理器”,
名称:“经理小组”
}];
self.user=ko.observable(新用户({
用户ID:1,
用户名:“尼克”,
角色:[“角色经理”、“角色更改用户”]
}))}
功能用户(数据){
var self=这个;
self.userId=data.userId;
self.username=ko.observable(data.username);
self.roles=ko.observearray(data.roles);
self.app=ko.computed({
读:函数(){
返回ko.utils.arrayFilter(self.roles(),函数(值){
返回值.indexOf(''''u',value.indexOf(''u')+2)<0;
})[0];
},
写入:函数(值){
$.each(self.roles(),函数(indx,role){
if(role.indexOf(“”“”,role.indexOf(“”“”)+1)<0)self.roles()[indx]=值;
});
},
所有者:self
}).延伸({
节气门:50
});}
var模型=新的UserManagementModel();ko.应用绑定(模型);

@Skeeve我不清楚您试图实现什么目标,但您的计算可观测值(应用程序)未进行评估的原因是:

计算可观测(app)的依赖关系是角色可观测数组,在其写入函数中,您正在更新可观测数组本身不可观测的值(非数组),因此knockout在可观测数组中未发现任何变化,因为它的读取函数未执行

因此,如果您想评估角色数组值变化的计算可观察值(app),那么您必须在角色可观察数组中创建每个可观察值,在您的情况下,您可以这样做:

...
    roles: [
              ko.observable("ROLE_MANAGER"), 
              ko.observable("ROLE_CHANGE_USER")]
..

谢谢!当我在文本输入中更改select的依赖项时,或者当我从另一个列表中选择值时,您能告诉我为什么select的值没有更新吗?
...
    roles: [
              ko.observable("ROLE_MANAGER"), 
              ko.observable("ROLE_CHANGE_USER")]
..