簡體   English   中英

重新分配模型后RivetsJS不更新

[英]RivetsJS not updating after reassigning model

我一直在玩RivetsJS,在我重新分配最初用作模型的對象之前,它可以完美地工作。 例如,我一直在JSFiddle中嘗試以下操作:

JavaScript的:

var testObject = {
    prop1: "ONE",
    prop2: "TWO"
};

var testObject2 = {
    prop1: "THREE",
    prop2: "FOUR"
}

var testBind = rivets.bind($("#properties"), {
    test: testObject
});

$("#randomize").click(function(e) {
    testObject.prop1 = Math.random();
    testObject.prop2 = Math.random();
});

$("#change").click(function(e) {
    testObject = $.extend(true, {}, testObject2);
});

HTML:

<div id="properties">
    <p>Prop1: { test.prop1 }</p>
    <p>Prop2: { test.prop2 }</p>
</div>

<button id="randomize">Randomize</button>
<button id="change">Change</button>

首先,這很完美。 該網頁顯示“一個”和“兩個”,當我單擊“隨機化”時,它們顯示隨機化的值。 但是,當我單擊“更改”時,什么也沒有發生,並且當我單擊“隨機化”時,元素也會停止更新。

我想在單擊“更改”時嘗試再次解除綁定和綁定,但這也不起作用。

這是JSFiddle

它們具有專用功能,您可以參考github討論此問題https://github.com/mikeric/rivets/issues/131

您現在可以簡單地寫這個

var otherTestObject = { test2: { prop1: "THREE", prop2: "FOUR" } }; testBind.update(otherTestObject);

我有同樣的問題。 我認為它使用對象引用來跟蹤對象,因此當您重新分配完整對象時,它將停止工作。

該Filddle之所以有效,是因為我們沒有重新分配父對象。 http://jsfiddle.net/a9hFk/2/

var testObject = {
    test2: {
        prop1: "ONE",
        prop2: "TWO"
    }
};

var testObject2 = {
    prop1: "THREE",
    prop2: "FOUR"
}

var testBind = rivets.bind( $("#properties"), {
    test: testObject
});

$("#randomize").click(function(e) {
    testObject.test2.prop1 = Math.random();
    testObject.test2.prop2 = Math.random();
});

$("#change").click(function(e) {
    testObject.test2 = $.extend(true, {}, testObject2);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM