从数组计算出的KO可更新

ke

我的模型中有一个可计算的可观测值。这是可更新的。尽管它从select数组中读取第一个值,但它从其中读取了正确的值,但它却将其写入用户的Roles数组中,因此很混乱。如果您尝试使用我的JSFiddle,您会看到,从另一个依赖项中选择另一个值后,它不会改变。我该如何运作?谢谢!

<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>

function UserManagementModel() {
var self = this;
self.apps = [{
    code: "ROLE_APP1",
    name: "App1"
}, {
    code: "ROLE_App2",
    name: "App2"
}, {
    code: "ROLE_MANAGER",
    name: "Manager panel"
}];
self.user = ko.observable(new User({
    userId: 1,
    username: "Nick",
    roles: ["ROLE_MANAGER", "ROLE_CHANGE_USER"]
}))}
function User(data) {
var self = this;
self.userId = data.userId;
self.username = ko.observable(data.username);
self.roles = ko.observableArray(data.roles);
self.app = ko.computed({
    read: function () {
        return ko.utils.arrayFilter(self.roles(), function (value) {
            return value.indexOf('_', value.indexOf('_') + 2) < 0;
        })[0];
    },
    write: function (value) {
        $.each(self.roles(), function (indx, role) {
            if (role.indexOf('_', role.indexOf('_') + 1) < 0) self.roles()[indx] = value;
        });
    },
    owner: self
}).extend({
    throttle: 50
});}
var model = new UserManagementModel();ko.applyBindings(model);
高拉夫

@Skeeve对我来说不清楚您要实现的目标,但是您的计算可观察值(应用程序)未评估的原因是:

计算的可观察(app)的依赖关系是角色可观察数组,并且在其写入函数中,您正在更新本身不可观察的可观察数组值(而非数组),因此敲除未在可观察数组中找到任何变化它的读取功能未执行

因此,如果您要评估角色数组值更改中的可观察值(应用程序),则必须在角色可观察数组中创建每个可观察值,在这种情况下,您可以执行以下操作:

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

检查这个小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用可观察数组计算出的淘汰赛未更新

来自分类Dev

Knockout JS:计算出的 observable 无法更新

来自分类Dev

用数组计算出现次数-Java

来自分类Dev

计算出现次数

来自分类Dev

更改计算的依赖项时,计算出的可观察的敲除不更新值

来自分类Dev

(MySQL)使用更新查询中计算出的值更新多行

来自分类Dev

通过插入从其他列计算出的值来更新rails mass更新列

来自分类Dev

将数组从C / C ++传递到Fortran并返回计算出的数组

来自分类Dev

在SQLAlchemy中打印计算出的距离

来自分类Dev

Golang Fibonacci计算出现

来自分类Dev

使用grep计算出现的总数

来自分类Dev

如何计算出勤率

来自分类Dev

在行中显示计算出的度量?

来自分类Dev

ALU计算出的Mips架构地址

来自分类Dev

XSL-计算出的金额总和

来自分类Dev

Makefile:计算出的变量名

来自分类Dev

VBA:计算出错#VALUE

来自分类Dev

从ajax更改视图模型时,计算出的剔除未更新

来自分类Dev

Javascript:在数组中搜索字符串,然后计算出现次数

来自分类Dev

如何在数组的for循环中添加计算出的值?

来自分类Dev

JS / jQuery计算出现在数组中的对象的消失率

来自分类Dev

给定一个约束数组,是否有可能获得计算出的帧?

来自分类Dev

java的,当不是数组时,将计算出的值打印到文件中吗?

来自分类Dev

计算出现次数并与 C 中的给定数组相关联

来自分类Dev

计算出的KnockoutJs不适用于最后计算出的字段

来自分类Dev

Javascript为什么我不能使用这样的数组,以及如何使用计算出的数字访问数组

来自分类Dev

Javascript为什么我不能使用这样的数组,以及如何使用计算出的数字访问数组

来自分类Dev

计算NOW()与计算出的时间之间的时差

来自分类Dev

使用MPI_Gather收集从一个数组中的所有进程计算出的总和

Related 相关文章

  1. 1

    使用可观察数组计算出的淘汰赛未更新

  2. 2

    Knockout JS:计算出的 observable 无法更新

  3. 3

    用数组计算出现次数-Java

  4. 4

    计算出现次数

  5. 5

    更改计算的依赖项时,计算出的可观察的敲除不更新值

  6. 6

    (MySQL)使用更新查询中计算出的值更新多行

  7. 7

    通过插入从其他列计算出的值来更新rails mass更新列

  8. 8

    将数组从C / C ++传递到Fortran并返回计算出的数组

  9. 9

    在SQLAlchemy中打印计算出的距离

  10. 10

    Golang Fibonacci计算出现

  11. 11

    使用grep计算出现的总数

  12. 12

    如何计算出勤率

  13. 13

    在行中显示计算出的度量?

  14. 14

    ALU计算出的Mips架构地址

  15. 15

    XSL-计算出的金额总和

  16. 16

    Makefile:计算出的变量名

  17. 17

    VBA:计算出错#VALUE

  18. 18

    从ajax更改视图模型时,计算出的剔除未更新

  19. 19

    Javascript:在数组中搜索字符串,然后计算出现次数

  20. 20

    如何在数组的for循环中添加计算出的值?

  21. 21

    JS / jQuery计算出现在数组中的对象的消失率

  22. 22

    给定一个约束数组,是否有可能获得计算出的帧?

  23. 23

    java的,当不是数组时,将计算出的值打印到文件中吗?

  24. 24

    计算出现次数并与 C 中的给定数组相关联

  25. 25

    计算出的KnockoutJs不适用于最后计算出的字段

  26. 26

    Javascript为什么我不能使用这样的数组,以及如何使用计算出的数字访问数组

  27. 27

    Javascript为什么我不能使用这样的数组,以及如何使用计算出的数字访问数组

  28. 28

    计算NOW()与计算出的时间之间的时差

  29. 29

    使用MPI_Gather收集从一个数组中的所有进程计算出的总和

热门标签

归档